我只是尝试在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