基本想法
可以把注销监听、注销服务写在flask exit hook里
Flask简单场景
-
Flask没有app.stop()方法
正常退出
-
Python有内置的atexit库
“The
atexitmodule defines functions to register and unregister cleanup functions. Functions thus registered are automatically executed upon normal interpreter termination.atexitruns these functions in the reverse order in which they were registered; if you registerA,B, andC, at interpreter termination time, they will be run in the orderC,B,A.”
指令退出CTRL+C/kill
当使用ctrl+C方式关闭服务器时可以用另一个库叫signal
题外话:可以通过注册signal.signal的形式处理一些事件,但是signal.STOP, signal.SIGKILL是没有办法拦截的(这种杀死是在内核级别实现的)。
# wsgi.py
import signal
def exit_hook(signalNumber, frame):
print("receiving", signalNumber)
if __name__ == "__main__":
signal.signal(signal.SIGINT, exit_hook)
app.run()
# 可以在结束时输出
# receiving 2
# 但是如果注册signal.SIGKILL/signal.SIGSTOP则代码会报错
回答原文如下:
There is no way to handle SIGKILL
The signals SIGKILL and

本文介绍如何使用Gunicorn的钩子机制实现服务的优雅启动与停止,包括信号处理、自定义钩子函数及配置文件的应用。
1202

被折叠的 条评论
为什么被折叠?



