SleekXMPP和Gevent

时间:2013-09-29 21:03:16

标签: python sqlite gevent

我正在使用Python中的XMPP,我希望能够通过XMPP生成新进程来侦听消息。我想我会使用gevent来生成新进程来监听消息。

我只是尝试将消息写入一个简单的SQLite3数据库,只是为了跟踪发生的事情,但是消息只会写入一个用户的数据库。我相信我只是没有得到gevent如何运作。

这是代码。 https://gist.github.com/simonbowen/6756511

1 个答案:

答案 0 :(得分:0)

您需要激活gevent monkey-patching。它将使Python代码变得如此 SleekXMPP库'非阻塞',您将能够处理多个greenlet 在平行下。只需在gevent导入后添加以下行:

from gevent import monkey; monkey.patch_all()

然而,在我看来,在我看来,对sqlite3的调用仍然会被阻塞 它是用C编写的Python扩展模块。 如果你想要一个完整的gevent友好实现,你必须做 在一个单独的线程中调用sqlite3,例如,使用gevent threadpool。