2013-04-20 2 views
4

Мне нужно реализовать zmq издателя в django и celery с redis как брокер. Но мой клиент ничего не получает.Внедрение zeromq издателя в django с сельдереем (Брокер redis)

tasks.py

from celery import task 
    import zmq 


    try: 
     context = zmq.Context() 
     publisher = context.socket(zmq.PUB) 
     publisher.bind('tcp://192.168.0.14:9997') 
    except: 
     pass 

    def app_delivery(): 
     publisher.send("testid : I am a task ") 
     return "Passed" 
    @task.task(ignore_result=True) 
    def add(): 
     print "I am going to push message " 
     return app_delivery() 

views.py

from django.http import HttpResponse 
from notification_core.tasks import add 

def resp(request): 
    param = request.GET.get('param') 
    param = int(param) 
    i=0 
    while i<param: 
     add.delay() 
     i+=1 
    return HttpResponse("Done") 

Тогда работающие работники, использующие command--

python manage_back.py celery worker --loglevel=info 

Рабочие консоли Выходной

[2013-04-20 10:37:06,400: WARNING/PoolWorker-2] I am going to push message 
[2013-04-20 10:37:06,400: INFO/MainProcess] Task notification_core.tasks.add[6d44bb48-799e-43dc-af3e-278c0db732c4] succeeded in 0.000511169433594s: 'Passed' 
[2013-04-20 10:37:06,575: INFO/MainProcess] Got task from broker: notification_core.tasks.add[8a787b31-5375-4c05-9ddc-2fc66b54ee19] 
[2013-04-20 10:37:06,575: WARNING/PoolWorker-3] I am going to push message 
[2013-04-20 10:37:06,576: INFO/MainProcess] Task notification_core.tasks.add[8a787b31-5375-4c05-9ddc-2fc66b54ee19] succeeded in 0.000941038131714s: 'Passed' 
[2013-04-20 10:37:06,751: INFO/MainProcess] Got task from broker: notification_core.tasks.add[d73ebcdf-9765-43f6-823a-ad03881afa50] 
[2013-04-20 10:37:06,752: WARNING/PoolWorker-4] I am going to push message 
[2013-04-20 10:37:06,752: INFO/MainProcess] Task notification_core.tasks.add[d73ebcdf-9765-43f6-823a-ad03881afa50] succeeded in 0.000416040420532s: 'Passed' 

zmq_client файл

import zmq 
context = zmq.Context() 

subscriber = context.socket(zmq.SUB) 
subscriber.connect('tcp://192.168.0.14:9997') 
subscriber.setsockopt(zmq.SUBSCRIBE, "testid") 
while True: 
    message = subscriber.recv() 
    print "==========" 
    print message 
    print "==========" 

я не получаю никакого вывода в клиенте, нужны некоторые предложения.

+0

начало с удаления попытки, кроме прохода :) –

ответ

0

Вы начали свой заказ первым? Как правило, вы хотите запустить SUB перед PUB. Кроме того, вы можете использовать конверты полезными, хотя это кажется излишним.

http://zguide.zeromq.org/page%3aall#Pub-Sub-Message-Envelopes

Надежда, что дает что-то из нас, если вы не просто есть соответствующее исключение, как упоминалось ранее.

Смежные вопросы