maximkv25
@maximkv25
web-developer

Как смотреть результаты выполнения задач в celery?

Требуется помощь в понимании как устроена работа celery, в особенности как мониторить выполнение тасков
Celery 4.0 + redis
1.
from celery import shared_task
from celery.decorators import task
from celery.utils.log import get_task_logger

logger = get_task_logger(__name__)

@shared_task
def add(x, y):
    logger.info('adding')
    return x + y

Есть таск для примера, в котором реализовано логирование, но лог отображается лишь при таком вызове
add.delay(2,2)
при
add(2,2)
в консоли тишина, почему так и как вывести в консоль все дергающиеся таски?
2.
@periodic_task(
     run_every=(crontab(minute='*/1')),
     ignore_result=True
 )
 def period():
     req = requests.get('http://example')
     req = message_delayed()
     send(req)
     logger.info('task success')

При периодическом таске всегда происходит логирование в консоли всех действий, возможно ли добиться такого же результата c
@task
эти 2 вопроса в принципе можно объединить, только интересно то, почему для
@periodic_task
дополнительно ничего не нужно прописывать
3.
@csrf_exempt
@task
def user_get(request):
    if request.method == 'POST':

Есть обычная ф-ция обернутая таском, в доках написано, что декоратор таска должен идти перед всеми декораторами, но в таком случаи джанго ругается что нет @csrf, правильно ли так использовать? или может есть еще варианты?
4. Возможно подскажите как вывести все логи в файл для celery 4.0? не совсем ясна вся процедура
5. Еще хотелось бы разобраться в redis, по сути он должен записывать все таски?
Я смотрел содержимое через keys * и после выполнения таска содержимое не изменилось(там их всего около 7) ведь не может же быть такого

Я лишь поверхностно знаком с celery и буду благодарен за все ответы/советы.
  • Вопрос задан
  • 1530 просмотров
Пригласить эксперта
Ответы на вопрос 1
@artinnok
бекенд-программист
Вам поможет flower
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы