2013-08-26 47 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