Python 如何在django重新启动之前运行代码?

Python 如何在django重新启动之前运行代码?,python,django,Python,Django,情况就是这样。 我在django内部启动一个电报bot(使用pyrogram框架),每次我修改文件并保存它或django由于任何原因重新启动时,我都必须在django再次启动之前关闭pyrogram。 若我并没有在服务器重启之前关闭pyrogram,它会在打印一句话后卡住,如: <modified_file_address> changed, reloading. 现在我的问题是: 有没有办法覆盖触发\u重新加载功能或以某种方式对其进行自定义? 若否: 是否有任何方法可以在trig

情况就是这样。
我在django内部启动一个电报bot(使用pyrogram框架),每次我修改文件并保存它或django由于任何原因重新启动时,我都必须在django再次启动之前关闭pyrogram。
若我并没有在服务器重启之前关闭pyrogram,它会在打印一句话后卡住,如:

<modified_file_address> changed, reloading.
现在我的问题是:

有没有办法覆盖
触发\u重新加载
功能或以某种方式对其进行自定义? 若否:

是否有任何方法可以在
trigger\u reload
函数之前运行函数? 如果没有,请再次:

是否可以使用另一个Django重新加载程序并对其进行自定义以关闭Bot? 如果没有,我该怎么办?

有什么建议吗?

触发器_reload
将由调用。在它调用之前,它将触发。因此,您可以为它注册一个处理程序

如果让处理程序返回真实值,它将停止自动加载。否则,如果不返回falsy值,则重新加载将继续。您可以使用它来实现自己的重新启动逻辑,或者跳转实现一些拆卸逻辑,然后保留原来的django autoreload:

来自django.dispatch导入接收方
从django.utils.autoreload导入文件\u更改
@接收方(文件已更改)
文件上的def已更改(发件人,**kwargs):
打印(“自定义文件已更改…”)
return True#返回真实值可防止重新加载。

我认为,这些都没有文档记录,因此它可能会在将来的版本中中断。我只是查看了当前的django代码。

相关:真的谢谢你,你帮了我很多忙。不管怎样,如果有人在读这篇评论,我也使用了
autoreload\u启动的
信号。你可以从django.utils.autoreload导入文件中导入这两个信号,比如改变了autoreload导入文件,启动了autoreload,我的朋友说了如何利用它们。现在,当
autoreload\u启动时,我启动bot
signal相遇,当
file\u更改时,我关闭bot
signal相遇。
# inside django.utils

def trigger_reload(filename):
    logger.info('%s changed, reloading.', filename)
    sys.exit(3)