Я использую Celery с супервизором, управляющим рабочими процессами, и Redis в качестве брокера, и у меня возникла проблема с рабочим Celery, по-видимому, зависающим, что делает его неспособным обрабатывать больше задач и приводит к заполнению его очереди задач в Redis вплоть до возникновения некоторых проблем с памятью. Я попытался установить параметр expires при вызове задачи, думая, что это позволит воспользоваться поддержкой Redis срока действия ключа:
Код: Выделить всё
some_task.apply_async(args=('foo',), expires=60)
но это не сработало, и когда я проверил соответствующий список в интерфейсе командной строки Redis, он просто продолжал расширяться – возможно, это неудивительно, потому что похоже, что срок действия списка не истекает. встроенная функциональность в Redis. В документации Celery говорится, что срок действия соответствует времени после «публикации» задачи, но я не смог найти никакого упоминания о том, что на самом деле означает «публикация». Я предположил, что речь идет о добавлении задачи в список Redis, так что либо это предположение неверно, либо происходит что-то еще, чего я не понимаю (или и то, и другое).
Я ошибаюсь насчет срока действия задачи? И если да, то есть ли способ истечь сроком действия сообщений в Redis?
Подробнее здесь:
https://stackoverflow.com/questions/490 ... expiration