我只是嘗試在appengine應用程序上使用scala和scalate模板系統。默認情況下,scalate會嘗試將已編譯的模板寫入文件系統。現在,顯然這不適用於appengine,並且有一種預編譯模板的方法。但我想知道是否可以在開發過程中關閉這個限制。它會大大減慢編譯/測試周期。在App Engine開發服務器中寫入文件系統
回答
我強烈建議不要使用AppEngine上...
如果你只是尋找免費的JVM/web應用託管,然後Stax.net提供了一個更好的選擇。在其他功能中,它允許您寫入文件系統併產生線程。
他們還利用內部的Scala,所以他們很重視其他斯卡拉開發商:)
Stax.net容納:http://www.stax.net/
(注:我在沒有辦法affilliated到斯塔克斯)
我目前使用的webpy具有相同的限制,其模板系統無法訪問解析器模塊(阻止)並且無法寫入Google App Engine上的文件系統,因此您需要預先編譯模板。
我已經用Python腳本解決了這個煩人的問題,每次給定目錄的文件發生更改時,都會觸發該文件的預編譯。
我在OSX和我使用FSEvents但我相信你可以找到在其他任何平臺(incron在Linux中,FileSystemWatcher在Windows上)其他解決方案/庫:
from fsevents import Observer
from fsevents import Stream
from datetime import datetime
import subprocess
import os
import time
PROJECT_PATH = '/Users/.../Project/GoogleAppEngine/stackprinter/'
TEMPLATE_COMPILE_PATH = os.path.join(PROJECT_PATH,'web','template.py')
VIEWS_PATH = os.path.join(PROJECT_PATH,'app','views')
def callback(event):
if event.name.endswith('.html'):
subprocess.Popen('python2.5 %s %s %s' % (TEMPLATE_COMPILE_PATH ,'--compile', VIEWS_PATH) , shell=True)
print '%s - %s compiled!' % (datetime.now(), event.name.split('/')[-1])
observer = Observer()
observer.start()
stream = Stream(callback, VIEWS_PATH, file_events=True)
observer.schedule(stream)
while not observer.isAlive():
time.sleep(0.1)
實際上,您可以修改dev服務器以寫入文件系統,請參閱我的答案。 – 2010-12-16 14:13:42
我的編譯過程設置爲編譯模板,無論如何,這對於生成編譯來說都是必需的。如果我無法做到這一點,這不是一場完全的災難,只是希望避免每次更改模板時等待。感謝帖子,雖然不知道FSEvents(我也在OSX上),但它可能會派上用場。 – nickclare 2010-12-16 14:49:47
@nick歡迎您,這真的很方便,快速;你只是忘記它實際上正在編譯。 – systempuntoout 2010-12-16 15:08:05
在Python開發服務器就可以了,我用它來記錄到文件中使用開發服務器時:
if os.environ.get('SERVER_SOFTWARE','').startswith('Dev'):
from google.appengine.tools.dev_appserver import FakeFile
FakeFile.ALLOWED_MODES = frozenset(['a','r', 'w', 'rb', 'U', 'rU'])
如果你想寫你可能需要的WB'或「吳」添加到列表中的二進制文件或Unicode。也許在Java開發服務器中有相同的東西。
- 1. 在Google App Engine開發服務器中自定義HighRepJobPolicy
- 2. Google App Engine queue.yaml無法在開發服務器上工作
- 3. 在App Engine開發服務器上使用SQLAlchemy
- 4. 將文件寫入我的GWT - Google App Engine(GAE)應用程序中的系統
- 5. 使用Google App Engine開發服務器作爲生產服務器
- 6. App Engine開發服務器CPU使用率
- 7. Google App Engine開發服務器日誌位置
- 8. 使用WingIDE時,Google App Engine開發服務器啓動緩慢
- 9. 帶Google App Engine本地開發服務器的Matplotlib
- 10. Google App Engine開發服務器隨機(?)減速
- 11. 無法訪問到App Engine的本地開發服務器
- 12. 使用App Engine開發服務器向Google API聲明身份
- 13. Google App Engine中的服務器發送事件(SSE)
- 14. 寫入Linux系統中具有Samba服務器的文件存在於Windows系統中
- 15. 錯誤通過SMTP服務器App Engine開發服務器上發送電子郵件
- 16. HTML:輸入類型=文件,但文件系統是服務器
- 17. 文件系統開發
- 18. 在Web API服務器文件系統中保存文件
- 19. 在開發服務器上工作,但它不在谷歌App Engine上(會話)
- 20. Python:如何在操作系統中打開時寫入文件
- 21. 在Google App Engine中多次寫入
- 22. 在netbean 7.3中添加Google App Engine服務器插件
- 23. 在服務器上寫入XML文件
- 24. 當發生更改時,App Engine開發服務器不重新加載代碼
- 25. 的WebPack開發服務器livereload文件
- 26. Google App Engine和後端:如何在開發服務器上配置它?
- 27. Google App Engine - 開發服務器 - 無法從其他機器訪問
- 28. 寫入系統目錄中的文件
- 29. Google App Engine上的Radius服務器?
- 30. 從開發GAE服務器獲取信息到本地文件系統
我仍在評估我的選擇,但至少現在,stax.net沒有我所需要的一切。新的AppEngine頻道API以及易於使用的memcache服務,圖像服務等,使AppEngine成爲一個有趣的平臺。如果AppEngine不能解決問題,那麼我寧願直接去EC2。從網站看來,Stax可能會得到一些這樣的東西,在這種情況下,我將不得不重新評估 – nickclare 2010-12-16 14:37:01