Google App Engine上的Python 2.7错误 - 无法使用CGI处理程序启用Threadsafe

use*_*783 21 google-app-engine python-2.7

我试图从Python 2.5迁移到Python 2.7,但每次都会遇到同样的错误.

我在Python 2.5中使用app.yaml文件和一个脚本main.py进行了一个非常简单的测试,它运行正常.它只是一个Hello World类型的脚本来检查everythin工作正常.

的app.yaml

application: sparepartsfinder
version: 1
runtime: python
api_version: 1


handlers:

- url: /blog
  script: main.py

- url: /blog/new_entry
  script: main.py 
Run Code Online (Sandbox Code Playgroud)

main.py

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

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

application = webapp.WSGIApplication(
                                     [('/', MainPage),
                                      ('/blog', MainPage),
                                      ('/blog/new_entry',MainPage),
                                      ('/blog/archive/.*',MainPage)],
                                     debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

当我更改为Python 2.7时,我会按照Google App Engine上的文档,在app.yaml和main.py脚本中进行更改.

的app.yaml

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


handlers:

- url: /blog
  script: main.py

- url: /blog/new_entry
  script: main.py 

- url: /blog/archive/.*
  script: main.py


- url: .*
  script: main.py
Run Code Online (Sandbox Code Playgroud)

main.py

import webapp2

class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.out.write('Hello prueba!')

app = webapp2.WSGIApplication([('/', MainPage),
                               ('/blog', MainPage),
                               ('/blog/new_entry',MainPage),
                               ('/blog/archive/.*',MainPage)],
                              debug=True)
Run Code Online (Sandbox Code Playgroud)

不幸的是,它无法在本地或我尝试将新配置上传到Google App Engine时无效.(我总是犯同样的错误).

我可以在Windows XP上理解我的机器中的问题(我有Python 2.5和2.7),但是在我上传时却没有.

这是错误:

2012-05-04 13:02:07运行命令:"[u'C:\ Python25\python2.5.exe',' - u','C:\ Archivos> de programa\_Google\google_appengine\appcfg.py ',' - no_cookies',u'--email = salvador.sanjuan @ gmail.com',' - passin','update','C:\ Documents and Settings\SSanjuan\Mis documentos\Dropbox\Dropbox\Python\SpareParts']"解析yaml文件时出错:无效对象:无法使用CGI处理程序启用threadsafe:"C:\ Documents and Settings\SSanjuan\Mis documentos\Dropbox\Dropbox\Python\SpareParts\app.yaml中的main.py ",第27行,第1栏2012-05-04 13:02:31(流程退出代码1)

Tak*_*suo 30

使用main.application,而不是main.py在你的app.yaml.您需要前者才能设置threadsafetrue.

  • 另请参阅:https://developers.google.com/appengine/docs/python/python27/using27#Configuring_WSGI_Script_Handlers (2认同)

Aer*_*yno 17

我一直有同样的问题,这就是答案.

对于Python 2.5运行时,您指定了文件的路径 - 即脚本:myfolder/myfile.py.

对于Python 2.7运行时,您指定了一个Object.因此,假设myfile.py包含一个适当的WSGI对象'app',它被指定为script:myfolder.myfile.app.

  • 完全 - 在你的路径中用`.`替换`/`,一切都很好! (3认同)