【问题标题】:threadsafe cannot be enabled with CGI handler无法使用 CGI 处理程序启用线程安全
【发布时间】:2012-07-19 16:07:14
【问题描述】:

我一直在尝试关注this turorial,以便在应用程序上实现 openID 身份验证,但我完全迷路了。不管我怎么尝试,我总是收到这个错误:

Fatal error when loading application configuration:
Invalid object:
threadsafe cannot be enabled with CGI handler: main.py

有人知道如何实现 openID 登录吗?

【问题讨论】:

标签: python google-app-engine


【解决方案1】:

这与 OpenID 无关。

如果您在 Google App Engine 中将新的并发请求 (threadsafe=true) 模式与 python 2.7 一起使用,则必须确保指定 WSGI 应用程序(例如 myapp.app)而不是app.yaml 中的 CGI 处理程序(例如 myapp.py)(有关详细信息,请参阅 here):

看起来像这样:

app.yaml:

application: myapp
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
   - url: /.*
    script: myapp.app

main.py:

import webapp2

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

app = webapp2.WSGIApplication([('/', MainPage)])

""" Old code:
def main():
  run_wsgi_app(app)

if __name__ == '__main__':
  main()
"""

或者,您也可以禁用并发请求 (threadsafe=false) 并使用旧的 CGI 处理程序。

【讨论】:

  • 修复错误后,您在问题中发布的教程中的示例应该可以工作。
  • 哇哦,我现在明白了:D 谢谢
  • 我不得不在使用 django.core.handlers.wsgi.WSGIHandler() 作为应用程序时禁用它:(
  • 线程安全有什么好处:真还是假?我不是编码员,所以我很犹豫是否要让代码更改别人的应用程序......但线程安全设置对我来说更容易接近。
猜你喜欢
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多