-2

Python で XMPP をいじっています。新しいプロセスを生成して、XMPP 経由でメッセージをリッスンできるようにしたいと考えています。メッセージをリッスンする新しいプロセスを生成するには、gevent を使用すると考えました。

何が起こっているのかを追跡するためだけに単純な SQLite3 データベースにメッセージを書き込もうとしていますが、メッセージは 1 人のユーザーのデータベースにしか書き込まれません。私はgeventがどのように機能するかを理解していないと確信しています。

これがコードです。https://gist.github.com/simonbowen/6756511

4

1 に答える 1

0

gevent monkey-patching を有効にする必要があります。これにより、SleekXMPP ライブラリのような Python コードが「ノンブロッキング」になり、複数の greenlet を並行して処理できるようになります。gevent import の後に次の行を追加するだけです。

from gevent import monkey; monkey.patch_all()

ただし、SQLite3 は C で記述された Python 拡張モジュールであると思われるため、呼び出しはまだブロックされているようです。たとえば、gevent スレッドプールを使用します。

于 2013-09-29T21:29:59.113 に答える