virtualenv 中带有 Django UWSGI 的 Systemd 在服务停止时不响应 SIGTERM

virtualenv 中带有 Django UWSGI 的 Systemd 在服务停止时不响应 SIGTERM

我有一个 Django 应用程序,它在使用 systemd 的虚拟环境中使用 uWSGI 运行。我根据文档使用“正常”方式进行设置,但似乎当我停止或重新启动服务时,SIGTERM 命令不会导致应用程序停止。它在 Amazon Linux 2023 上运行,我没有在应用程序中添加任何内容以使其以特定方式运行/停止/重新启动,它是一个普通的 Django 应用程序。

我在journalctl中看到以下错误: State 'stop-sigterm' timed out. Killing.

我的服务文件:

[Unit]
Description=Application uwsgi service
After=network.target syslog.target

[Service]
User=nginx
Group=nginx
ExecStart=/bin/bash -c 'source /opt/env-application/bin/activate; uwsgi --ini /opt/application/uwsgi.ini'
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target

我的 uwsgi.ini:

[uwsgi]
module = application.wsgi:application
enable-threads = true
master = true
processes = 1
plugins = python3
project = /opt/application/
chdir = %(project)
socket = 127.0.0.1:3031
chmod-socket = 660
chown-socket = nginx:nginx
uid = nginx
gid = nginx
socket-timeout = 3600
harakiri = 3600
vacuum = true
die-on-term = true
wsgi-file=/opt/application/uwsgi.py
virtualenv = /opt/env-application/

我的 wsgi.py:

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "application.config.production")

application = get_wsgi_application()

相关内容