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
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python