본문 바로가기
🎱개발일지

장고+웹소켓 wsgi,asgi /gunicorn,uvicorn

by 덩크냥 2024. 9. 23.

배포쪽에서 이슈들이 있었는데

 

이전 전략은 

gunicorn에서 uvicorn worker을 써서 asgi도 처리하게 하는것.

그러나 이것은 웹소켓 연결수가 많아지니 터져버렸다.

 

그래서 아예 gunicorn은 wsgi만.

uvicorn서비스는 asgi만. 처리하도록 분리했다.

 

gunicorn

 

before

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=dev3
Group=www-data
WorkingDirectory=/home/dev3/btn/
ExecStart=/home/dev3/btn/venv/bin/gunicorn \
          --access-logfile - \
          --workers 5 \
          --bind unix:/run/gunicorn/gunicorn.sock \
          -k uvicorn.workers.UvicornWorker \
          --log-level debug \
          button.asgi:application


[Install]
WantedBy=multi-user.target

----------------------------------------------

after

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=dev3
Group=www-data
WorkingDirectory=/home/dev3/btn/
ExecStart=/home/dev3/btn/venv/bin/gunicorn \
          --access-logfile - \
          --workers 5 \
          --bind unix:/run/gunicorn/gunicorn.sock \
          --log-level debug \
          button.wsgi:application


[Install]
WantedBy=multi-user.target

 

 

 

Uvicorn

[Unit]
Description=Uvicorn Websocket Server
After=network.target

[Service]
User=dev3
WorkingDirectory=/home/dev3/btn
ExecStart=/home/dev3/btn/venv/bin/uvicorn button.asgi:application --host 127.0.0.1 --port 8001
Restart=always

[Install]
WantedBy=multi-user.target

 

구니콘은 소켓 사용하고 유비콘은 로컬로 따로 동작하도록 !

 

 

아 uvicorn 포트가 8001이니까 sudo ufw allow 8001 해줘야함.