Избегайте рекурсивного save () при использовании сельдерея для обновления полей модели Django

Я переопределяю метод save () модели для вызова асинхронной задачи с помощью Celery. Эта задача также сохраняет модель, и поэтому я получаю рекурсивную ситуацию, когда задача Celery вызывается повторно. Вот код:

Метод сохранения модели:

def save(self, *args, **kwargs):
    super(Route, self).save(*args, **kwargs)
    from .tasks import get_elevation_data
    get_elevation_data.delay(self)

get_elevation_data task:

from celery.decorators import task

@task()
def get_elevation_data(route):
    ...
    route.elevation_data = results
    route.save()

Как я могу избежать этой рекурсии?

12
задан worksology 30 May 2011 в 21:20
поделиться