Пишу бота на aiogram. Админ бота может добавлять события, у которых будет время и дата выполнения. За некоторое время до этого всем пользователям бота должно прийти уведомление об этом. При этом события могут быть отложены на неделю и более. В качестве воркера решил использовать celery, а брокера - redis. Однако, на сайте доки прочитал такую вещь:
Tasks with eta or countdown are immediately fetched by the worker and until the scheduled time passes, they reside in the worker’s memory. When using those options to schedule lots of tasks for a distant future, those tasks may accumulate in the worker and make a significant impact on the RAM usage.
Moreover, tasks are not acknowledged until the worker starts executing them. If using Redis as a broker, task will get redelivered when countdown exceeds visibility_timeout (see Caveats).
Therefore, using eta and countdown is not recommended for scheduling tasks for a distant future. Ideally, use values no longer than several minutes. For longer durations, consider using database-backed periodic tasks, e.g. with https://pypi.org/project/django-celery-beat/ if using Django (see Using custom scheduler classes).
Что значит то, если вкратце, что задачи, отложенные надолго, могут занимать много памяти. Более того, если использовать в качестве брокера redis, то задачи будут доставлятся повторно, когда обратный отсчет превысит Visibility_timeout. Там еще сказано, что идеально не использовать период больше нескольких минут, что вообще не подходит для моей ситуации...
Что посоветуете делать? Менять воркер и/или брокер? Или эти рамки (указанные в доке) не особо строгие? (хотя я понимаю, что это не так) Буду рад любым советам, очень нужна помощь!