Celery Beat не закрывает соединение с БД после db.session.close () - PullRequest
0 голосов
/ 08 мая 2019

Я запускаю одну задачу сельдерея, которая запрашивает одну таблицу и обновляет другую. Я заканчиваю задачу с помощью 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 ().

...