Почему когда останавливаешь докер не срабатывает событие gunicorn on_exit?
У меня есть docker-compose файл, который запускает nginx и джанго на gunicorn. В самом файле конфигураций gunicorn есть логика, которая должна выполняться, когда сервер останавливаеться, но она не срабатывает при остановке докер. А если использывать без докера, то она работает.
docker-compose.yaml
version: '3.8'
services:
gunicorn:
build: .
volumes:
- ./app/static:/app/static
- ./app/db/db.sqlite3:/app/db/db.sqlite3
ports:
- "127.0.0.1:8000:8000"
nginx:
build: ./nginx
volumes:
- ./app/static:/app/static
ports:
- "8080:8080"
depends_on:
- gunicorn
gunicorn.conf.py
import multiprocessing
import sqlite3
from datetime import datetime, timedelta
import pytz
bind = "0.0.0.0:8000"
workers = multiprocessing.cpu_count() * 2 + 1
def on_exit(server):
connection = sqlite3.connect('db.sqlite3')
cursor = connection.cursor()
cursor.execute('SELECT exit_time FROM game')
time = cursor.fetchone()[0]
if time is None:
current_time = datetime.now().replace(tzinfo=pytz.UTC) - timedelta(hours=3)
cursor.execute('UPDATE game SET exit_time = ?', (current_time,))
connection.commit()
connection.close()
Может кто-то знает, как правильно нужно это делать?