3

geventライブラリとgreenletライブラリをインストールし__init__.py、Djano アプリケーションのファイルに次の 2 行でダンプしました。

from gevent import monkey
monkey.patch_all()

現在、Django コンソールに次のようなエラーが頻繁に表示されます。

Exception KeyError: KeyError(27066240,) in <module 'threading' from 'C:\Program_Files\Python27\Lib\threading.pyc'> ignored

この 2 行を削除すると、アプリケーションは問題なく動作します。これは、私が Windows マシンで使用しているパッケージのリストです。

django-erroneous - 0.1.0       - active
Django          - 1.3.1        - active
gevent          - 0.13.6       - active
greenlet        - 0.3.3        - active
lxml            - 2.3.3        - active
PIL             - 1.1.7        - active
pip             - 1.0.2        - active
setuptools      - 0.6c11       - active
South           - 0.7.3        - active
virtualenv      - 1.6.1        - active
yolk            - 0.4.1        - active

Django と Gevent との互換性の問題はありますか? ここで何か間違ったことをしていますか?

参考までに、非公式の Python リポジトリからビルド済みの Windows バイナリを使用しています。これは開発環境です。

4

1 に答える 1

2

昨日、に関連するモンキー モジュールのバグが修正されましたpatch_item。修正されたバージョンでさらにテストすることをお勧めします。

それでも問題が解決しない場合は、patch_allいくつかの引数を False に設定して呼び出すことで問題を絞り込み、問題のあるモジュールを見つけることができます。

def patch_all(socket=True, dns=True, time=True, select=True, thread=True, os=True, ssl=True, httplib=False, aggressive=True)

より狭い範囲でテストするために私が最終的に推奨する最初のものはmonkey.patch_all(socket=False, select=False). これにより、「dns」と「aggressive」も使用されなくなります。ソケットに集中して個別に選択し、最後に、他のすべてを安全に有効にできる場合は、「dns」と「aggressive」で遊んでください。

于 2012-04-13T07:35:50.830 に答える