我遇到了一个常见的问题。但是,通常建议的解决方案似乎在这里不起作用。在尝试运行App Engine时,我得到“无法使用CGI处理程序启用线程安全”。当然,文档太可怕了。我正在使用webapp2,所以线程安全无关紧要。
我的文件结构应该如下: backend / api / get_json.py - 这将提供所有发送到/api/*.json的HTTP请求。换句话说,后端/部分对最终用户是隐藏的。
我无法让app.yaml识别并正确加载Python文件到/backend/api/get_json.py
app.yaml文件:
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 :(得分: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文件夹中