2017-09-21 4 views
1

셀러리의 문서에서 알 수 있듯이 게시 작업을 수행 할 때 우선 교환을 보내고 대리인을 대기열로 교환합니다. 이제 나는받은 모든 작업을 3 개의 다른 대기열에 위임 할 특정 맞춤형 교환기로 작업을 보내려고합니다. 다른 대기열은 백그라운드에서 다른 소비자를 가지며 다른 작업을 수행합니다.셀러리 파이썬 대신 큐에 넣기 작업을 보내는 방법

class Tasks(object): 

    def __init__(self, config_object={}): 
     self.celery = Celery() 
     self.celery.config_from_object(config_object) 
     self.task_publisher = task_publisher 

    def publish(self, task_name, job_id=None, params={}): 

     if not job_id: 
     job_id = uuid.uuid4() 
     self.celery.send_task(task_name, [job_id, params], queue='new_queue') 

class config_object(object): 

    CELERY_IGNORE_RESULT = True 
    BROKER_PORT = 5672 
    BROKER_URL = 'amqp://guest:[email protected]' 
    CELERY_RESULT_BACKEND = 'amqp' 

tasks_service = Tasks(config_object) 
tasks_service.publish('logger.log_event', params={'a': 'b'}) 

이것은 내가 그것을 기본 하나에 보내지는 큐를 정의 해달라고하면 내가, 특정 큐에 작업을 보낼 수있는 방법입니다,하지만 난에 보낼 교환을 정의 어떻게 내 질문은?

답변

0

이 문제가 해결되었는지 확실하지 않습니다. 나는 지난 주에 똑같은 것을 보았습니다.

def publish(self, task_name, job_id=None, params={}): 

     if not job_id: 
      job_id = uuid.uuid4() 
      self.celery.send_task(
       task_name, 
       [job_id, params], 
       exchange='name.of.exchange', 
       routing_key='*' 
      ) 
: 나는 셀러리 4.1 난 그냥 교환 이름 및 게시 방법 너무

, 당신이 뭔가를 할 것 routing_key을 정의하는 것이었다와 함께 제공되는 솔루션입니다

관련 문제