[Python] Celery task e subtasks in parallelo
Karim
lemieliste a gmail.com
Ven 14 Lug 2017 10:00:12 CEST
Ciao lista, non riesco a capire come posso usare un task di celery per
chiamare dei subtasks in parallelo.
Ho un server che crea 4 workers e usa redis come broker.
Il codice e’ pressapoco questo:
*# accounts_grouped equivale ad una lista con liste di n accounts*
*# [[account1, account2], [account3, account4] (….) ]*
*for accounts_group in accounts_grouped:*
* # preso dagli esempi sul sito Celery*
* g = group(fetch_data_for.s(account.id <http://account.id>) for
account in accounts_grouped)() result_of_group = g.get()
total_data_created += result_of_group*
*return total_data_created*
Io vorrei che i `fetch_
data
_for` venissero eseguiti in parallelo e messi in coda nei vari workers.
Ho provato questo codice, ma il .get mi causa error:
*RuntimeError: Never call result.get() within a task!*
*See
http://docs.celeryq.org/en/latest/userguide/tasks.html#task-synchronous-subtasks
<http://docs.celeryq.org/en/latest/userguide/tasks.html#task-synchronous-subtasks>*
Localmente funzionava, ma localmente non ho esattamente la stessa
configurazione che ho online.
Penso che raggruppare gli account per fare gruppi di n non sia la
soluzione migliore. C’e’ un modo per eseguire il fetch_data_for come
subtasks per tutti i miei accounts?
Mi potete aiutare a capire come devo procedere?
Grazie
—
Karim N. Gorjux
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20170714/ba126868/attachment.html>
Maggiori informazioni sulla lista
Python