Обновление атрибута объекта из базы данных в Django
Допустим, у меня есть модель, представляющая задачу:
class Task(models.Model):
on_status = models.BooleanField()
def run(self):
if self.on_status:
# do stuff
Я запускаю эту задачу с помощью Celery Beat, и у меня есть приборная панель, работающая на Gunicorn, обе используют одну и ту же базу данных.
app = Celery("app")
app.conf.beat_schedule = {
"run_task": {
"task": "run_tasks",
"schedule": 5.0,
"options": {
"expires": 6.0,
},
},
}
tasks = Task.objects.all()
@app.task
def run_tasks():
for task in tasks:
task.run()
Я могу изменить on_status
с панели управления, но затем мне нужно обновить self.on_status
экземпляра внутри процесса Celery Beat. Существует ли команда для обновления значения атрибута из базы данных или есть другой подход?
Независимо от того, как вы используете celery-beat, основной вопрос, похоже, заключается в том, как можно обновить объект модели django. Это делается с помощью refresh_from_db
: https://docs.djangoproject.com/en/5.1/ref/models/instances/#refreshing-objects-from-database