Jadi saya punya dua server pekerja (celeryd) yang menggunakan dua host virtual di server kelincimq yang sama. Saya meneruskan variabel ke file messagecenter.py saya untuk menentukan url broker mana yang harus digunakan untuk menerbitkan tugas. Setelah melakukan debug beberapa saat saya menemukan bahwa setelah seledri membuat koneksi dengan url broker - seledri tidak terputus dari vhost sebelumnya dan terhubung ke yang baru. Saya tidak yakin persis bagaimana pertukaran dan pengikatan bekerja di seledri. Jadi bantuan apa pun sangat dihargai.
pusat pesan.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)
Dan saya memasukkan 'WORKER1' atau 'WORKER2' bersama dengan parameter yang diperlukan untuk mempublikasikan tugas yaitu send_task. Saya berharap ada cara agar saya dapat merutekan tugas saya dengan benar ke server yang berbeda. Bantuan apa pun akan sangat dihargai.