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

Tro*_*han 6 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>
Run Code Online (Sandbox Code Playgroud)

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

Sam*_*hen 4

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

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

所以我们可以捕获信号SIG_INTSIG_TERM优雅地退出。例如

import signal

def quit_gracefully():
   print('quit')

signal.signal(signal.SIGINT, quit_gracefully)
signal.signal(signal.SIGTERM, quit_gracefully)
Run Code Online (Sandbox Code Playgroud)

参考此文档: https: //docs.python.org/3/library/signal.html