<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">Ciao lista, non riesco a capire come posso usare un task di celery per chiamare dei subtasks in parallelo.</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">Ho un server che crea 4 workers e usa redis come broker.</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">Il codice e’ pressapoco questo:</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div class="gmail_default" style="font-family:verdana,sans-serif"><i># accounts_grouped equivale ad una lista con liste di n accounts</i></div><div class="gmail_default" style="font-family:verdana,sans-serif"><i># [[account1, account2], [account3, account4] (….) ]</i></div><div class="gmail_default" style="font-family:verdana,sans-serif"><i><br></i></div><i>for accounts_group in<div class="gmail_default" style="font-family:verdana,sans-serif;display:inline"> </div>accounts_grouped:<br></i><div class="gmail_default" style="font-family:verdana,sans-serif"><i> # preso dagli esempi sul sito Celery</i></div><i> g = group(fetch_<div class="gmail_default" style="font-family:verdana,sans-serif;display:inline">data</div>_for.s(<a href="http://account.id">account.id</a>) for account in <div class="gmail_default" style="font-family:verdana,sans-serif;display:inline">accounts_grouped</div>)()<br> result_of_group = g.get()<br> total_<div class="gmail_default" style="font-family:verdana,sans-serif;display:inline">data</div>_created += res<div class="gmail_default" style="font-family:verdana,sans-serif;display:inline"></div>ult_of_group</i></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><i><br></i></div><div><div class="gmail_signature"><div><div class="gmail_default" style="font-family:verdana,sans-serif"><i>return total_data_created</i></div></div></div></div></blockquote><div><div class="gmail_signature"><div dir="ltr"><br></div><div dir="ltr"><br></div><div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">Io vorrei che i `<span style="font-family:arial,sans-serif">fetch_</span><div class="gmail_default" style="display:inline">data</div><span style="font-family:arial,sans-serif">_for` venissero eseguiti in parallelo e messi in coda nei vari workers. </span></div><div class="gmail_default" style="font-family:verdana,sans-serif"><span style="font-family:arial,sans-serif"><br></span></div><div class="gmail_default">Ho provato questo codice, ma il .get mi causa error:</div><div class="gmail_default"><br></div></div></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div class="gmail_signature"><div><div class="gmail_default"><div class="gmail_default"><i>RuntimeError: Never call result.get() within a task!</i></div></div></div></div></div><div><div class="gmail_signature"><div><div class="gmail_default"><div class="gmail_default"><i>See <a href="http://docs.celeryq.org/en/latest/userguide/tasks.html#task-synchronous-subtasks">http://docs.celeryq.org/en/latest/userguide/tasks.html#task-synchronous-subtasks</a></i></div></div></div></div></div></blockquote><div><div class="gmail_signature"><div dir="ltr"><br></div><div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">Localmente funzionava, ma localmente non ho esattamente la stessa configurazione che ho online.</div></div><div dir="ltr"><br></div><div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">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?</div><br></div><div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">Mi potete aiutare a capire come devo procedere? </div><br></div><div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">Grazie</div><br></div><div dir="ltr"><br></div><div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">—</div></div><div dir="ltr">Karim N. Gorjux<br></div></div>
</div></div>