Как сгруппировать несколько функций для параллельного выполнения с помощью Celery?
Я хотел сгруппировать несколько функций для параллельного выполнения в Django внутри функции transaction.on_commit - однако, я получил TypeError: cannot unpack non-iterable int object Я пытался решить эту проблему, но теперь я думаю, что я неправильно использую один из args. Вот мой первоначальный подход:
# tasks.py
def func_a(keys: tuple, link_set: dict):
# keys contain random integers as pk
return
def func_b(keys: tuple, link_set: dict):
return
def func_c(keys: tuple, link_set: dict):
return
Я пытался вызвать их в своем сигнале следующим образом:
@receiver(post_save, sender=Foo)
def start_task(sender, instance, created, **kwargs):
if created:
...
keys = (instance.pk, foo.pk)
link_set = {}
transaction.on_commit(lambda: group([
tasks.func_a.si(keys, link_set),
tasks.func_b.si(keys, link_set),
tasks.func_c.si(keys, link_set)
]).delay())
Три функции в tasks.py являются независимыми друг от друга без возвращаемого значения, объединение их в одну влечет за собой небольшие затраты, которых я хотел бы избежать - как лучше составить эти функции для более быстрого ответа? Спасибо