我有一个 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()