Я запускаю одну задачу сельдерея, которая запрашивает одну таблицу и обновляет другую. Я заканчиваю задачу с помощью db.session.close (), но сеанс остается открытым и в конечном итоге происходит сбой моего экземпляра базы данных, когда количество подключений превышает лимит моей учетной записи.
Закрытые вручную незанятые сессии. Я запускаю расписание ритма через 1 минуту после часа, поэтому легко увидеть, какие соединения относятся к задаче ритма.
@celery.task(name="category_count")
def category_count():
categories = CategoryModel.find_all()
for category in categories:
count = MemberModel.count_category(category.category_name)
if category.count != count:
category.count = count
db.session.add(category)
db.session.commit()
db.session.close()
celery.conf.CELERYBEAT_SCHEDULE = {
"my_task": {
"task": "category_count",
"schedule": crontab(hour="*", minute=1)
}
}
Соединения остаются открытыми даже после db.session.close ().