Обновление атрибута объекта из базы данных в 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

Вернуться на верх