0

私はシンプルなPython 2.5 アプリエンジンPython 2.7アプリから始めて、そのマルチスレッド機能を利用することを期待してに移行しました。webapp2.RequestHandler移行後、インスタンスがすべてメインスレッドから呼び出されていることに気付きました。

クライアントがAJAX複数の非同期リクエストを起動しています。サーバー側で特定のイベントが発生した場合にのみ応答したいリクエストの1つ。今のところ、イベントが10秒間スリープしているとしましょう。問題は、スリープがメインスレッドで発生し、からの2番目のASYNC要求を処理する前にスレッドを占有することAJAXです。私は何が欠けていますか?

スタックトレースは次のとおりです。

PyDevDebug [PyDev Google App Run] dev_appserver.py
MainThread --pid4276_seq4
post [test1.py:53]
dispatch [webapp2.py:570]
call [webapp2.py:1102]
default_dispatcher [webapp2.py:1278]
call [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]_ディスパッチ[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] run [pydevd.py:1090][pydevd.py:1397
]
スレッド-4-pid4276_seq5dev_appserver.py

4

1 に答える 1

0

開発(ローカル)サーバーでは、並列スレッドは並列ではなくシリアルで実行されているようです。

ここに「実験的な開発サーバー」がありますが、これは私に思い出させてくれました。

GoogleAppEngine用の実験的な新しい開発サーバー。

複雑なアプリケーションのパフォーマンスを向上させ、より正確なセマンティクスを実現するマルチスレッドサービング。たとえば、urlfetchを介して独自のアプリケーションにアクセスすることでデッドロックが発生しなくなりました。

それはローカルでそれを解決するかもしれませんが、私はそれを個人的に試していません。

于 2013-01-30T19:28:56.790 に答える