使用Django的自动重载程序时,优雅的退出服务器

时间:2016-07-02 13:15:31

标签: python django

我正在使用一个自定义的Django runserver命令,它应该在终止时运行一堆清理函数。只要我不使用自动重载器,这就可以正常工作:服务器正确捕获KeyboardInterrupt异常并正常退出。

但是,如果我使用Django的自动重载程序,重新加载器似乎只是在没有正确终止它的情况下终止服务器线程(据我所知,它没有任何办法来执行此操作)。

这似乎本质上是不安全的,所以我不能相信没有更好的方法来处理这个问题。

我可以以某种方式使用autoreloader功能,而不会不洁净地杀死我的服务器线程吗?

1 个答案:

答案 0 :(得分:1)

尝试使用atexit模块来捕获终止。它应该适用于像SIGINT或SIGTERM这样的所有东西,SIGKILL不能被中断(但不应该通过任何自动重启脚本发送而不发送SIGTERM)。