gpt4 book ai didi

python - 在 python 中简单连续运行 XMPP 客户端

转载 作者:行者123 更新时间:2023-12-01 06:14:09 25 4
gpt4 key购买 nike

我正在使用 python-xmpp 发送 jabber 消息。一切工作正常,除了每次我想发送消息(每 15 分钟)我需要重新连接到 jabber 服务器,同时发送客户端处于离线状态并且无法接收消息。

所以我想编写一个非常简单的、无限期运行的 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('receiver@example.org', 'hello world')
time.sleep(30)

这里的问题似乎是我无法唤醒它。我最好的猜测是我需要某种并发性。这是真的吗?如果是,我最好怎样做?

编辑:在研究了所有有关并发性的选项后,我决定使用twisted和wokkel。如果可以的话,我会删除这篇文章。

最佳答案

homepage 上有一个很好的例子xmpppy 本身(这是 python-xmpp 的另一个名称),它几乎可以满足您的需求:xtalk.py

它基本上是一个控制台 jabber 客户端,但重写为您想要的机器人应该不难。

它始终在线并且可以发送和接收消息。我认为这里不需要多处理(或其他并发)模块,除非您需要在完全相同的时间接收和发送消息。

关于python - 在 python 中简单连续运行 XMPP 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4269441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com