Требуется помощь в понимании как устроена работа 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 и буду благодарен за все ответы/советы.