celery-pool-asyncio
celery-pool-asyncio copied to clipboard
(feat) pass celery task uuid to kwargs for further usage
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 runupdate_state
in different task request. It happens becausetask.update_state
(withouttask_id
argument) callstask.request
but it returns only top element of task request stack. -
Not all tasks turned for
started
state; Some random task turned forstarted
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.
Я уже пару лет не трогаю эту либу -- там с monkey patching на самом деле дикое уродство. Так вышло, что мои проекты на текуший момент даже не используют celery -- я даже проверить не особо могу предложенные PR
Кажется, мне даже суть проблемы знакома. Неужто NS правите?
Хохо, не, не знаю, что такой "NS" :( Просто хотелось, чтобы flower отображал, что происходит, ну и за state тасков подглядывать, пока они в процессе.
Суть проблемы, по факту, заключается, что task.request возвращает только последний добавленный request, хотя в пакете он правильно туда кладется и вынимается. Но оно там захардкожено на возвращение именно последнего. И через monkey patching я это не рискнул править. Вообще, в самом пакете добавилась одна строка, которая прокидывает task_uuid
в саму задачу.
Monkey patching... Ну оно работает, а это уже результат :) Асинхронности как то все не видать в celery, хотя они вроде его обещали с пятой ветки.