@Kirill-Gorelov
С ума с IT

FastApi перестает работать из-за простоя?

Есть приложение не fastApi. Ели приложение не трогать часов 6-10, оно выдает ошибку
Invalid HTTP request received Это я вижу в консоле сервера.

Если я перехожу по какой-нибудь ссылке, то приложение выдает 500 Internal Server Error
И тогда в консоле появляется следующая ошибка
Can't reconnect until invalid transaction is rolled back.


Мое подключение к БД
engine = create_engine(
    SQLALCHEMY_DATABASE_URL, pool_size=10, max_overflow=20, pool_pre_ping=True, pool_recycle=60
)

session = Session(bind=engine, autoflush=False)

И дальше я вызываю session для запросов.

Вот мой nginx
server {
        server_name site.ru;
        listen 80 default_server;
        listen [::]:80 default_server;

        location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_redirect off;
        proxy_buffering off; 
        proxy_pass http://xx.xx.xx.xx:8000;
    }
}

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

upstream uvicorn {
    server unix:/tmp/uvicorn.sock;
}


Все работает, если приложение перезагрузить. Но простаивает ночь, и ломается.
Все советы из доков sqlAchemy я старался внедрить и они мне не помогли.

Даже проверял если постоянно делать запросы к бд по крону.
Повесил крон, который что-то обновляет в БД
user = session.query(Users).filter(Users.login == 'test', Users.active == True).one_or_none()
user.login = 'test'
session.add(user)
session.commit()


То есть, что бы не было разрыва с БД, и это тоже не помогло.

И вот так у меня идет запуск приложения
python3.10 -m uvicorn index:app --host xx.xx.xx.xx --reload


python 3.10
sqlAchemy 1.46

Парни, подсобите, уже два месяца вожусь с этой проблемой((
  • Вопрос задан
  • 729 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы