시스템 소켓 활성화가 첫 번째 요청을 처리할 준비가 되지 않은 이유

시스템 소켓 활성화가 첫 번째 요청을 처리할 준비가 되지 않은 이유

Python 가상 환경에서 실행되고 uWSGI 및 Nginx와 함께 사용되는 Flask 응용 프로그램이 있습니다.

애플리케이션 시작을 관리하기 위해 systemd 소켓 활성화를 사용하고 싶습니다.

관련 구성은 다음과 같습니다.

uwsgi-flask.service

[Unit]
Description=a uWSGI app
After=syslog.target

[Service]
Type=notify
User=www-data
Group=www-data
WorkingDirectory=/home/www-data/my-app
ExecStart=/bin/bash -c "source venv/bin/activate && uwsgi \
          --ini flask-uwsgi.ini \
          --socket /dev/shm/flask.sock"
Restart=always
KillSignal=SIGQUIT
StandardError=syslog
NotifyAccess=all

uwsgi-flask.socket

[Unit]
Description=Socket for uWSGI app

[Socket]
ListenStream=/dev/shm/flask.sock
SocketUser=www-data
SocketGroup=www-data
SocketMode=0660

[Install]
WantedBy=sockets.target

nginx.conf

server {
    listen  80;
    server_name localhost;

    location / {
        root /home/www-data/my-app/public;
        try_files $uri @flask;
    }

    location @flask {
        uwsgi_pass   unix:/dev/shm/flask.sock;
        include      uwsgi_params;
    }
}

systemd 소켓을 시작하고 요청을 하면:

systemctl start uwsgi-flask.socket

첫 번째 요청은 항상 다음과 같은 504 응답을 받습니다.

504 Gateway Time-out

하지만 두 번째 이후 요청은 정상입니다. 이는 첫 번째 요청이 이루어졌을 때 유닉스 소켓이 준비되지 않은 것과 같습니다.

이상한 점은 내가 시작하면uwsgi-flask.service직접적으로는 문제가 없습니다.

systemctl start uwsgi-flask.service

위 문제의 원인은 무엇일까요?

관련 정보