Я использую последние версии 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"),
}
}
Я не могу заставить задачи не отображаться в Цветке, поэтому я думаю, что задачи все еще должны быть там (занимают память).
Это правда? Есть мысли заставить их исчезнуть?
Спасибо!
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