पर रूट सेलेरी कार्य मेरे पास मेरे सर्वर पर चल रहे दो अलग सेलेरीड प्रक्रियाएं हैं, supervisor
द्वारा प्रबंधित। वे इस तरह के रूप अलग कतारों पर सुनने की तैयारी में हैं:विशिष्ट कतार
[program:celeryd1]
command=/path/to/celeryd --pool=solo --queues=queue1
...
[program:celeryd2]
command=/path/to/celeryd --pool=solo --queues=queue2
...
और मेरे celeryconfig इस तरह दिखता है:
from celery.schedules import crontab
BROKER_URL = "amqp://guest:[email protected]:5672//"
CELERY_DISABLE_RATE_LIMITS = True
CELERYD_CONCURRENCY = 1
CELERY_IGNORE_RESULT = True
CELERY_DEFAULT_QUEUE = 'default'
CELERY_QUEUES = {
'default': {
"exchange": "default",
"binding_key": "default",
},
'queue1': {
'exchange': 'queue1',
'routing_key': 'queue1',
},
'queue2': {
'exchange': 'queue2',
'routing_key': 'queue2',
},
}
CELERY_IMPORTS = ('tasks',)
CELERYBEAT_SCHEDULE = {
'first-queue': {
'task': 'tasks.sync',
'schedule': crontab(hour=02, minute=00),
'kwargs': {'client': 'client_1'},
'options': {'queue': 'queue1'},
},
'second-queue': {
'task': 'tasks.sync',
'schedule': crontab(hour=02, minute=00),
'kwargs': {'client': 'client_2'},
'options': {'queue': 'queue1'},
},
}
सभी tasks.sync
कार्य एक विशिष्ट कतार (और इसलिए celeryd प्रगति) के लिए कराई जानी चाहिए। लेकिन जब मैं sync.apply_async(kwargs={'client': 'value'}, queue='queue1')
के साथ मैन्युअल रूप से कार्य को चलाने का प्रयास करता हूं तो दोनों अजवाइन कर्मचारी कार्य को उठाते हैं। मैं सही कतार में कार्य मार्ग कैसे बना सकता हूं और केवल उस कार्यकर्ता द्वारा चलाया जा सकता है जो कतार से बंधे हैं?