celery-pool-asyncio icon indicating copy to clipboard operation
celery-pool-asyncio copied to clipboard

(feat) pass celery task uuid to kwargs for further usage

Open zt50tz opened this issue 2 years ago • 2 comments

Hello!

Thank you for your package.

I have some problems if i run many same tasks with storing state of task progress:

  • I can't use self.update_state with @celery.task(bind=True); It works, but updates only last task state. Even I run update_state in different task request. It happens because task.update_state (without task_id argument) calls task.request but it returns only top element of task request stack.

  • Not all tasks turned for started state; Some random task turned for started state but not all of them.

So i added one more kwarg parameter in trace.py that provides task uuid for further usage.

I added example that shows how it works — pretty simple, but impossible without this argument. I understand that you store examples in different repository but don't know how to show this technique in one place, so i added it here.

Thanks once more for your work.

zt50tz avatar Apr 18 '22 00:04 zt50tz

Я уже пару лет не трогаю эту либу -- там с monkey patching на самом деле дикое уродство. Так вышло, что мои проекты на текуший момент даже не используют celery -- я даже проверить не особо могу предложенные PR

Кажется, мне даже суть проблемы знакома. Неужто NS правите?

kai3341 avatar Apr 20 '22 14:04 kai3341

Хохо, не, не знаю, что такой "NS" :( Просто хотелось, чтобы flower отображал, что происходит, ну и за state тасков подглядывать, пока они в процессе.

Суть проблемы, по факту, заключается, что task.request возвращает только последний добавленный request, хотя в пакете он правильно туда кладется и вынимается. Но оно там захардкожено на возвращение именно последнего. И через monkey patching я это не рискнул править. Вообще, в самом пакете добавилась одна строка, которая прокидывает task_uuid в саму задачу.

Monkey patching... Ну оно работает, а это уже результат :) Асинхронности как то все не видать в celery, хотя они вроде его обещали с пятой ветки.

zt50tz avatar Apr 20 '22 18:04 zt50tz