这是一个代码的基本示例,用于显示我运行的IRC bot的基础:
s=socket.socket()
s.connect((foo, 1234))
s.send('NICK foo\r\n')
s.send('USER foo bar baz :qux\r\n')
while True:
readbuffer=readbuffer+s.recv(1024)
temp=string.split(readbuffer, "\n")
readbuffer=temp.pop()
for line in temp:
line=string.rstrip(line)
line=string.split(line)
if(line[0]=="PING"):
s.send("PONG %s\r\n" % line[1])
这很好,但是,我想要执行一个命令来每隔60秒发送一条消息,我应该怎么做呢?我假设这将以某种方式异步完成,超出无限循环?
答案 0 :(得分:0)
我建议阅读this article。它讨论了协同程序的细节,以及python中的异步处理。包含了一堆你可以使用的示例python代码。
答案 1 :(得分:0)
是的,你可以。是的,它会在循环之外,除非你想在循环内超过60秒的间隔,比如每隔一段时间检查一次。我会设置一个间隔计时器,它会调用你的每60秒消息函数,然后让该函数异步执行发送,如你所说。可能存在同步(一种不同类型的同步:-)与循环内发生的发送有关的问题,但理论上它可以很好地工作!
答案 2 :(得分:0)
您可以使用线程异步运行它。
关于它的一个很好的例子:http://g-off.net/software/a-python-repeatable-threadingtimer-class