首页 > 解决方案 > 有什么办法可以强制 django 在退出前运行一些整理代码?

问题描述

我正在用 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')in app/__init__.py,但发现它运行了两次。为什么?

标签: djangopython-3.x

解决方案


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

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

所以我们可以捕捉到信号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


推荐阅读