ดังนั้นฉันจึงมีเซิร์ฟเวอร์ผู้ปฏิบัติงานสองตัว (คื่นฉ่าย) ที่ใช้โฮสต์เสมือนสองโฮสต์ในเซิร์ฟเวอร์ rabbitmq เดียวกัน ฉันส่งตัวแปรไปยังไฟล์ messagecenter.py ของฉันเพื่อระบุว่าควรใช้ URL ของโบรกเกอร์ใดในการเผยแพร่งาน หลังจากการดีบั๊กมาระยะหนึ่ง ฉันพบว่าเมื่อคื่นฉ่ายสร้างการเชื่อมต่อกับ URL ของโบรกเกอร์ - มันจะไม่ตัดการเชื่อมต่อจาก vhost ก่อนหน้าและเชื่อมต่อกับอันใหม่ ฉันไม่แน่ใจว่าการแลกเปลี่ยนและการผูกทำงานอย่างไรในขึ้นฉ่าย ดังนั้นความช่วยเหลือใด ๆ จึงได้รับการชื่นชมอย่างมาก
messagecenter.py/
from celery import Celery
MESSAGE_SETTINGS = {
"WORKER1": "amqp://user1:pass1@server-name:5672/vhost1",
"WORKER2": "amqp://user2:pass2@server-name:5672/vhost2"
}
class MessageCenter(object):
def __init__(self, config):
self._config = config
self._celery = Celery()
def produce_task(self, name, uuid, params):
self._celery.conf.update(
BROKER_URL = self._config[name])
self._celery.send_task(uuid, params)
และฉันส่งผ่าน 'WORKER1' หรือ 'WORKER2' พร้อมกับพารามิเตอร์ที่จำเป็นเพื่อเผยแพร่งาน เช่น send_task ฉันหวังว่าจะมีวิธีที่ฉันสามารถกำหนดเส้นทางงานของฉันไปยังเซิร์ฟเวอร์ต่างๆ ได้อย่างถูกต้อง ความช่วยเหลือใด ๆ จะได้รับการชื่นชมอย่างมาก