Почему когда останавливаешь докер не срабатывает событие 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()

Может кто-то знает, как правильно нужно это делать?

Вернуться на верх