使用 python irc 库定期执行任务

Posted

技术标签:

【中文标题】使用 python irc 库定期执行任务【英文标题】:Perform tasks periodically with python irc library 【发布时间】:2013-10-08 22:45:32 【问题描述】:

有没有办法自动执行周期性任务:例如使用 python irclib 或 twisted-based youmomdotcom python irc bot 向其他用户或频道发送消息等。

基于 irclib 的 irc 客户端示例:

from irc import client
class OurIRCClient(client.SimpleIRCClient):
    def __init__(self):
        client.SimpleIRCClient.__init__(self)

import sys
client = OurIRCClient()

try:
    client.connect("irc.freenode.net", 6667, myUserId)
    print "connected to irc.freenode.net"
except:
    sys.exit(-1)
    "error: coouldn't connect to irc server"
client.connection.join("#django-hotclub")
client.start()

【问题讨论】:

【参考方案1】:

如果您使用基于 Twisted 的解决方案,您可以简单地使用 LoopingCall 来安排您想要调用的任何周期性方法。

(如果您使用 irclib,则很难以在所有情况下都能正常工作的方式执行此操作,因此我不会在此处将其包含在答案中。)

【讨论】:

【参考方案2】:

正如 Glyph 指出的,我已经覆盖了 irc 客户端类的实例方法 connectionMade 并使其使用LoopingCall。

 def connectionMade(self):
        irc.IRCClient.connectionMade(self)
        task.LoopingCall(lambda : (self.msg(counterpartID, "hi there"))).start(5.0)

【讨论】:

以上是关于使用 python irc 库定期执行任务的主要内容,如果未能解决你的问题,请参考以下文章

Python IRC bot + SQLAlchemy - 多渠道跟踪用户

Twisted Python IRC bot - 如何异步执行函数以便它不会阻塞机器人?

如何安排脚本定期运行?

IRC Python Bot:最佳方式 [关闭]

Irc-bot 使用扭曲与期刊印刷

Flask 学习-86.Flask-APScheduler 创建定时任务