2011-03-24 45 views
0

有沒有人用過pidbox.Mailbox成功使用pidbox.Mailbox?

我正在嘗試做類似的例子,但該文件是過時的方式。我設法得到一些信息發佈到Django交通工具,但從那裏他們從來沒有成功地收到。

我希望有人知道如何使用它,並且可以告訴我一個如何成功地調用/演員的例子。

這裏是我有什麼(虛擬節點真的什麼也不做只是打印或列表):

#node/server 
    mailbox = pidbox.Mailbox("test", type="direct") 
    connection = BrokerConnection(transport="django") 

    bound = mailbox(connection) 

    state = {"node": DummyNode(), 
       "connection": connection 
     } 

    node = bound.Node(state = state) 

    @node.handler 
    def list(state, **kwargs): 
     print 'list called' 
     return state["node"].list() 
    @node.handler 
    def connection_info(state, **kwargs): 
     return {"connection": state["connection"].info()} 
    @node.handler 
    def print_msg(state, **kwargs): 
     print 'Node handler!' 
     state["node"].print_msg(kwargs) 


    consumer = node.listen(channel = connection.channel()) 
    try: 
     while not self.killed: 
      print 'Consumer Waiting' 
      connection.drain_events() 
    finally: 
     consumer.cancel() 

和一個簡單的客戶端。

#client:  

mailbox = pidbox.Mailbox("test", type="direct") 
connection = BrokerConnection(transport="django") 
bound = mailbox(connection) 

bound.cast(["localhost"], "print_msg", {'msg' : 'Message for you'}) 
info = bound.call(["test_application"],"list", callback=callback) 
+0

當我瀏覽它時,它看起來是正確的,但是什麼不正確? – asksol 2011-03-26 21:31:50

+0

3個字或更少:沒有任何工作。沒有收到消息,也沒有回覆。我可以用它來偵測一段時間,並與django交通工具進行單向通信,但它不值得,因此我正在編寫我自己的程序。你是說你已經成功地使用過這款產品嗎? – Nix 2011-03-28 14:34:50

+0

Celery(http://celeryproject.org)使用pidbox來遠程控制工作進程。但我現在可以看到它爲什麼不適合你,你正在使用不支持扇出交換(廣播)的「django」傳輸。看到這裏http://kombu.me/introduction.html#transport-comparison – asksol 2011-03-28 19:32:58

回答

0

對此的回答顯然不是。如果你遇到這篇文章,我強烈建議你自己寫。關於pidbox的文檔太少,而且那裏的文檔已經過期。