我从一个简单的Python 2.5
应用引擎应用开始,并将其迁移到Python 2.7
,希望利用其多线程功能。迁移后,我注意到webapp2.RequestHandler
个实例都是从主线程中调用的。
我有一个AJAX
客户端启动了多个异步请求。其中一个请求我只想在服务器端发生某些事件时才响应。我们只是说事件现在睡了10秒钟。问题是睡眠发生在主线程中,并在处理来自AJAX
的第二个ASYNC请求之前占用线程。我错过了什么?
这是一个堆栈跟踪:
PyDevDebug [PyDev Google App Run] dev_appserver.py
MainThread - pid4276_seq4
发表[test1.py:53]
发送[webapp2.py:570]
致电 [webapp2.py:1102]
default_dispatcher [webapp2.py:1278]
致电 [webapp2.py:1529]
处理[wsgi.py:223]
HandleRequest [wsgi.py:298] HandleRequest [runtime.py:151]
ExecutePy27Handler [dev_appserver.py:1525]
ExecuteCGI [dev_appserver.py:1701]
发货[dev_appserver.py:1803]
派遣[dev_appserver.py:719] _Dispatch [dev_appserver.py:2870]
_HandleRequest [dev_appserver.py:3001]
do_POST [dev_appserver.py:2794] handle_one_request [BaseHTTPServer.py:328]
handle [BaseHTTPServer.py:340]
init [SocketServer.py:638]
init [dev_appserver.py:2780]
finish_request [SocketServer.py:323]
process_request [SocketServer.py:310]
_handle_request_noblock [SocketServer.py:284]
handle_request [dev_appserver.py:3991]
serve_forever [dev_appserver.py:4028]
main [dev_appserver_main.py:721]
[dev_appserver_main.py:747]
run_file [dev_appserver.py:167] [dev_appserver.py:171] 运行[pydevd.py:1090]
[pydevd.py:1397]
Thread-4 - pid4276_seq5 dev_appserver.py
答案 0 :(得分:0)
有一个“实验性开发服务器”here,您刚刚提醒我:
Google App Engine的实验性新开发服务器。
多线程服务,可为复杂应用程序提供更好的性能,并提供更正确的语义,例如:通过urlfetch访问您自己的应用程序不再是死锁。
这可能在当地解决,但我没有亲自尝试过。