【发布时间】:2021-08-08 03:39:36
【问题描述】:
情况就是这样。
我在 django 内启动了一个 telegram bot(使用 pyrogram 框架),每次修改文件并保存它或 django 以任何原因重新启动,我必须在 django 再次启动之前关闭 pyrogram。
如果我没有在服务器重启过程之前关闭 pyrogram,它会在打印如下语句后卡住:
<modified_file_address> changed, reloading.
在这行之后,什么都没有发生,django 不会再次启动,我只是找到了问题的根源。
Pyrogram(v0.18.0 - 同步版本)是由于多线程锁键引起的。(描述起来有点复杂,与问题无关)
如果我可以在再次运行 django 服务器之前关闭 pyrogram bot(字面意思是在打印 <modified_file_address> changed, reloading. 消息之前或之后),我可以修复它。
在 django 源代码中搜索后,这是实际打印该消息的函数。
# inside django.utils
def trigger_reload(filename):
logger.info('%s changed, reloading.', filename)
sys.exit(3)
现在这是我的问题:
有没有办法覆盖trigger_reload 函数或以某种方式自定义它?
如果没有:
有什么方法可以在 trigger_reload 函数之前运行函数吗?
如果再次没有:
是否可以使用另一个 Django Reloader 并自定义它来关闭机器人?
如果再次没有,我该怎么办?
有什么建议吗?
【问题讨论】: