django - 有没有办法强制django在退出前运行一些整理代码?

标签 django python-3.x

我正在用 django 运行一个服务器程序,
我想在服务器运行之前和之后运行一些代码。
我可以把这些代码放在哪里?

<run function a here>
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
^C
<run function b here>

我试过print('hello')app/__init__.py ,但发现它运行了两次。为什么?

最佳答案

我确实认为用 runserver 运行 Django 应用不是一个好主意或类似。
所以你的问题可以是“如何优雅地退出 Django 应用程序”。

通常我们在生产环境中使用 gunicorn 运行 Django或类似的 WSGI 应用程序。你不会知道它何时以及如何退出。

所以我们可能会捕捉到信号 SIG_INTSIG_TERM优雅地退出。
例如

import signal

def quit_gracefully():
   print('quit')

signal.signal(signal.SIGINT, quit_gracefully)
signal.signal(signal.SIGTERM, quit_gracefully)

引用此文档:https://docs.python.org/3/library/signal.html

关于django - 有没有办法强制django在退出前运行一些整理代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62128093/

相关文章:

python - 带有 redirect_uri 的 social-auth-app-django facebook 后端状态

django - 访问 django 中的模型字段和属性

python - 循环计数器表现异常

python-3.x - 在 FreeBSD 上使用 pip3 安装 matplotlib 失败

python - 我的递归/迭代方法有任何替代或改进吗?

javascript - Django:返回包含脚本的 HTML 文件

python - Django 模型实例是否可哈希?

python - 通过Django Rest中的ForeignKey访问另一个模型中的字段

python - 不明白我收到的错误?

python-3.x - 轮廓-OpenCV错误:诸如船体,矩形等不同特征的输出相同