Результаты Celery, Flower, Redis

Я использую последние версии Celery и Flower и Redis, но я не могу понять что случилось. Я получаю все результаты, и данные возвращаются правильно, но когда я просматриваю задачи Celery с помощью Flower, я вижу все задачи и результаты.

Моя задача имеет следующий декоратор:

@celery.task(ignore_result=True, bind=True)
def perform_long_task(self, urls):

Я пробовал звонить get(), forget() и т. д., но когда я смотрю на Цветок, результаты всегда там.

Я также пробовал:

CELERY_TASK_RESULT_EXPIRES=10

Я запускаю задачу с:

celery worker -l info -B -A test.api.tasks

Я пробовал:

class CeleryConfig:
    CELERYBEAT_SCHEDULE = {
        'check-every-minute': {
                    'task': 'celery.backend_cleanup',
                    'schedule': crontab(hour="*/1"),
        }
    }

Я не могу заставить задачи не отображаться в Цветке, поэтому я думаю, что задачи все еще должны быть там (занимают память).

Это правда? Есть мысли заставить их исчезнуть?

Спасибо!


person mattjvincent    schedule 29.06.2018    source источник
comment
Недавно я столкнулся с аналогичной проблемой с task_results в celery. В моем случае GC никогда не очищал память, когда возвращались GroupResult и AsyncResult. Вызов .forget() на них сработал (метаданные были удалены из моего Redis), но GroupResult все еще сохранялся в памяти. Единственное решение, которое я нашел, заключалось в том, чтобы не использовать results_backend и создать собственную реализацию task_result. Я не уверен, нужен ли вам task_results. Если вы это сделаете, вы можете сохранить цель своей задачи вместо task_result stackoverflow.com/a/38267978/2525104.   -  person Kenjin    schedule 09.07.2018