Sono in esecuzione il mio server utilizzando questo comando:assegnare compiti diversi a diversi lavoratori di sedano
celery worker -Q q1,q2 -c 2
il che dimostra che il mio server si occuperà di tutte le attività sulle code q1
e q2
, e ho 2 lavoratori in esecuzione. Il mio server dovrebbe supportare 2 diversi compiti:
@celery.task(name='test1')
def test1():
print "test1"
time.sleep(3)
@celery.task(name='test2')
def test2():
print "test2"
Se mando i miei compiti test1
fare la fila q1
e test2
a q2
, sia ai lavoratori verrà eseguito entrambi i compiti. Così il risultato sarà:
test1
test2
test1
test2
...
Ora quello che serve è uno dei miei lavoratori gestire test1
e l'altro gestisce test2
. Una soluzione è quella di eseguire due operatori di sedano come questo:
celery worker -Q q1 -c 1
celery worker -Q q2 -c 1
E ognuno gestisce 1 coda. Ma mi piacerebbe averli più puliti e usare -c 2
. Ho trovato Celery Routing ma non sono sicuro che sia quello che voglio.
Quindi stai usando due broker qui? Mi chiedo se sia possibile utilizzare solo un broker condiviso e un server di lavoro condiviso? L'operatore chiama semplicemente test1() o test2() in base ai nomi delle attività. Grazie. –
Questo è in realtà ciò che desideri. Broker e server condivisi. Sono solo lavoratori diversi, gestiscono compiti diversi usando code diverse. – AliBZ
Puoi indicarmi il documento in cui posso imparare come inviare attività alle code corrispondenti? Perché dal codice precedente, non vedo alcuna relazione vincolante tra test1, test2 e q1, q2. Molte grazie. –