на самом деле я не уверен, почему нам нужно использовать команду commit для задачи Celery, чтобы завершить транзакцию, а затем снова в главном потоке. ниже приведен рабочий пример:
эта задача сельдерея выполняется каждые 7 секунд.
@scheduler.task()
def run_task():
task = Tasks.get_task("task1")
task.update_task({'status': "succeed"})
db.session.commit()
def test_update_task(self):
task = create_task("task1", status="active")
log.warning("task {} status before change:{}".format(task.id, task.status))
time.sleep(10)
# Here the celery task will update task status from "active" to "succeed"
db.session.commit()
log.warning("test {} task status after Celery change:{}".format(task.id, task.status))