我正在使用python-xmpp發送jabber消息。除了每次我想發送消息(每15分鐘)我都需要重新連接到jabber服務器,並且同時發送客戶端處於脫機狀態並且無法接收消息,一切正常。在Python中簡單的連續運行XMPP客戶端
所以我想寫一個非常簡單的,無限期運行的xmpp客戶端,它一直處於在線狀態,並且可以在需要時發送(並接收)消息。
我微不足道的(非工作)的方法:
import time
import xmpp
class Jabber(object):
def __init__(self):
server = 'example.com'
username = 'bot'
passwd = 'password'
self.client = xmpp.Client(server)
self.client.connect(server=(server, 5222))
self.client.auth(username, passwd, 'bot')
self.client.sendInitPresence()
self.sleep()
def sleep(self):
self.awake = False
delay = 1
while not self.awake:
time.sleep(delay)
def wake(self):
self.awake = True
def auth(self, jid):
self.client.getRoster().Authorize(jid)
self.sleep()
def send(self, jid, msg):
message = xmpp.Message(jid, msg)
message.setAttr('type', 'chat')
self.client.send(message)
self.sleep()
if __name__ == '__main__':
j = Jabber()
time.sleep(3)
j.wake()
j.send('[email protected]', 'hello world')
time.sleep(30)
這裏的問題似乎是,我無法將其喚醒。我最好的猜測是我需要某種併發性。這是真的,如果是的話,我最好怎麼去做呢?
編輯:在研究了關於併發性的所有選項後,我決定用扭曲和wokkel去。如果可以的話,我會刪除這篇文章。
如果您希望能夠同時發送和接收消息,則需要併發性。看看`multiprocessing`模塊或者其中的很多教程之一。 – katrielalex 2010-11-24 17:10:20