我正在通过uWSGI运行Flask应用。我有一些清理代码,我需要在我的应用程序退出时运行(关闭一些外部进程)。我为SIGTERM
和SIGINT
安装了信号处理程序,以使用python signal
模块运行脚本。当我使用python
运行应用并点击Ctrl+C
时,这些工作正常。但是,无论出于何种原因,当我执行/etc/init.d/uwsgi-emperor stop
时,这些都不会运行,因此它们必须被uWSGI代码绕过。什么是在退出时运行函数的最佳方法?
答案 0 :(得分:0)
不要覆盖uWSGI worker中的UNIX信号,它是无限问题流的路径。正如已经建议的那样使用python atexit模块,uwsgi.atexit python钩子,或者更通用的uwsgi钩子(你从选项定义的那些,比如--exec-as-user-atexit)