2013-08-26 46 views
2

我正在运行到看起来像一个常见问题。但是,通常建议的解决方案似乎并不适用于此。尝试运行App Engine时,我得到“线程安全无法启用CGI处理程序”。当然,文档是可怕的。我正在使用webapp2,所以线程安全应该没关系。“线程安全无法启用CGI处理程序”

我的文件结构应如下: 后端/ API/get_json.py - 这有助于即将/api/*.json换句话说所有的HTTP请求,后端/部分是从最终用户隐藏。

我遇到麻烦的app.yaml认识到,在/backend/api/get_json.py

app.yaml文件正确加载Python的文件:

application: ebtest 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url: /api/.*\.json 
    script: backend/api/get_json.application 

libraries: 
- name: webapp2 
    version: "2.5.2" 

后端/ API/get_json.py

import webapp2 

class MainPage(webapp2.RequestHandler): 

    def get(self): 
     self.response.headers['Content-Type'] = 'text/plain' 
     self.response.write('Hello, World!') 


application = webapp2.WSGIApplication([ 
    ('/api/get_users.json', MainPage), 
], debug=True) 

错误

File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/yaml_listener.py", line 177, in _HandleEvents 
    raise yaml_errors.EventError(e, event_object) 
google.appengine.api.yaml_errors.EventError: **threadsafe cannot be enabled with CGI handler: backend/api/get_json.application** 
+0

是线程安全不应该是真实的,而不是对?我也不认为你需要在库中指定webapp2。至少这就是我在我的应用程序 – marcadian

+0

中的内容,我认为现在我应该看看文档;不幸的是,这并没有解决问题。我离线更新了代码,并在上面的代码片段中。 – eb80

回答

6

它适用于我..这里是我的app.yaml(我把它与helloworld例子结合)我没有在localhost上启动dev_appserver时出现任何错误。你使用什么版本的appengine?我使用的是1.7.5

application: helloworld 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

libraries: 
- name: django 
    version: "1.2" 
- name: pycrypto 
    version: "2.6" 


handlers: 
- url: /api/.*\.json 
    script: backend.api.get_json.application 
- url: /.* 
    script: helloworld.app 

您需要创建

__init__.py 

后端和API文件夹内

+1

你可以分享你的文件结构吗?我有get_json不在根中?我有它在后端/ api/get_json.py?我该如何做文件结构?换句话说,你有“脚本:get_json.application”,但我有get_json嵌套在后端/ api/get_json.py ...我如何保持我的文件结构? – eb80

+0

对不起,我不知道你需要保持结构。我改变了我的回答 – marcadian

+0

非常好!这工作!谢谢! – eb80