2013-09-29 4 views
-2

Я возился с XMPP в Python, и я хочу, чтобы иметь возможность запускать новые процессы для прослушивания сообщений через XMPP. Я решил, что буду использовать gevent для создания новых процессов для прослушивания сообщений.SleekXMPP и Gevent

Я просто пытаюсь написать сообщения в простую базу данных SQLite3, чтобы отслеживать, что происходит, однако сообщения записываются только в базу данных для одного пользователя. Я уверен, что я просто не понимаю, как работает gevent.

Вот код. https://gist.github.com/simonbowen/6756511

ответ

0

Вам необходимо активировать gevent monkey-patching. Это приведет к тому, что код Python, как из библиотеки SleekXMPP, будет «неблокировать», и вы сможете обрабатывать несколько зеленых точек параллельно. Просто добавьте следующую строку после импорта GEvent:

from gevent import monkey; monkey.patch_all() 

Тем не менее, мне кажется звонит sqlite3 по-прежнему будет блокирование, так как я полагаю, это модуль расширения Python написан на C. Если вы хотите перейти для полной реализации gevent-friendly вы должны сделать вызовы sqlite3 в отдельном потоке, например, используя gevent threadpool.

Смежные вопросы