我正在运行一个芹菜节拍任务,该任务查询一张桌子并更新另一张桌子。我以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()之后,连接仍保持打开状态。