python - 在不重新启动主脚本的情况下加载/重新加载 Python 中的部分代码

标签 python twisted irc

简介

过去几天我一直在研究 Twisted,不到一个月前才开始使用 Python。我的第一个倾向是玩我每天都知道和使用的东西,IRC。感谢 ircLogBot.py,我已经建立并运行了一个基本的 IRC 连接示例。

问题

我希望有一些任意代码在收到 IRC 事件 (PRIVMSG/CTCP/JOIN/PART) 时运行,并且出于调试目的我希望能够更改那段代码然后重新加载它而不关闭整个脚本并重新连接到 IRC 服务器。

最后的笔记

它不一定是包含 Twisted 的解决方案,因为我还没有完全理解它。虽然我认为这是一种扭曲的事情,但作为一个事件驱动的框架,可能设计得很好。

最佳答案

Twisted 在 twisted.python.rebuild 中有一些内置功能它提供了更全面的 Python 内置 reload 实现。功能。仍然存在一些限制,但它与 Python 的内置重新加载的主要区别在于它会找到对象的旧实例并将它们的类替换为新版本。 (主要限制是您必须意识到您的实例可能具有与您当前版本的 __init__ 不匹配的旧状态,如果您更改了它,这就是 rebuild.Sensitive。是为了。)

如果你想做一些真正花哨和自动化的东西,你可以设置一个文件系统监视器来检测文件何时更改,并在文件更改时重新加载相关模块。在 Linux 上,您可以使用 Twisted 的 inotify支持更改通知,在 OS X 上,您可以使用 cfreactor连同 FSEvents原料药 via PyObjC . (我不知道哪些文件更改监控方案适用于 win32,但也可能适用。)

关于python - 在不重新启动主脚本的情况下加载/重新加载 Python 中的部分代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7912250/

相关文章:

python - Discord.py(重写): Error Handling “Improper Token” In Function

python - 如果没有要爬行的网址,Scrapy 会关闭蜘蛛

python - BeautifulSoup4 排除包装器中的 div

python - 扭曲或 celery ?哪个适合我的具有大量 SOAP 调用的应用程序?

python - 如何使用 python 中的 group() 方法进行列表理解?

python - 使用 Twisted 和 Greenlet 时出错

python - 连接失败后扭曲延迟不可调用

python - 如何使用 Python Twitch IRC 机器人获取聊天消息参数?

java - PircBot 未在抽搐聊天中发送消息

ajax - 基于 Web 的 ajax IRC 客户端如何克服 IRC 服务器的连接限制?