"无法使用CGI处理程序启用threadsafe"

eb8*_*b80 2 python google-app-engine

我遇到了一个常见的问题.但是,通常建议的解决方案似乎在这里不起作用.在尝试运行App Engine时,我得到"无法使用CGI处理程序启用线程安全".当然,文档太可怕了.我使用的是webapp2,所以线程安全无关紧要.

我的文件结构应如下所示:backend/api/get_json.py - 这将为来自/api/*.json的所有HTTP请求提供服务.换句话说,后端/部分对最终用户是隐藏的.

我无法让app.yaml在/backend/api/get_json.py上识别并正确加载Python文件

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"
Run Code Online (Sandbox Code Playgroud)

后端/ 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)
Run Code Online (Sandbox Code Playgroud)

错误

  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**
Run Code Online (Sandbox Code Playgroud)

mar*_*ian 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
Run Code Online (Sandbox Code Playgroud)

你需要创造

__init__.py
Run Code Online (Sandbox Code Playgroud)

在后端和api文件夹中