每隔60秒做一次异步操作

时间:2011-10-07 15:14:36

标签: python irc

这是一个代码的基本示例,用于显示我运行的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秒发送一条消息,我应该怎么做呢?我假设这将以某种方式异步完成,超出无限循环?

3 个答案:

答案 0 :(得分:0)

我建议阅读this article。它讨论了协同程序的细节,以及python中的异步处理。包含了一堆你可以使用的示例python代码。

答案 1 :(得分:0)

是的,你可以。是的,它会在循环之外,除非你想在循环内超过60秒的间隔,比如每隔一段时间检查一次。我会设置一个间隔计时器,它会调用你的每60秒消息函数,然后让该函数异步执行发送,如你所说。可能存在同步(一种不同类型的同步:-)与循环内发生的发送有关的问题,但理论上它可以很好地工作!

答案 2 :(得分:0)

您可以使用线程异步运行它。

关于它的一个很好的例子:http://g-off.net/software/a-python-repeatable-threadingtimer-class