2013-10-08 64 views
0

我使用一个类的方法中的蟒蛇,并从我做pika的on_open_error_callback方法签名是什么样子的?

self.connection = pika.SelectConnection(
      self.connectionParameters, 
      on_open_callback=self.onConnected, 
      on_open_error_callback=self.onConnectionError, 
      on_close_callback=self.onConnectionClosed, 
      stop_ioloop_on_close=False) 

在我的源代码,我宣布的方法(在一个类):

在运行时我
def onConnectionError(self): 
    """ 
    @summary: Called if the connection to rabbit is unavailable. Attempt to connect to one of 
     the many backup servers. 
    @return: ?? 
    """ 

然而我得到以下错误:

Traceback (most recent call last): 
    File "SpaceListener.py", line 218, in <module> 
    cacheTime=args.timeout) 
    File "SpaceListener.py", line 88, in __init__ 
    logger=self.logger) 
    File "/home/centos/house/tes/castExchangeScan.py", line 108, in __init__ 
    stop_ioloop_on_close=False) 
    File "build/bdist.linux-i686/egg/pika/adapters/select_connection.py", line 51, in __init__ 
    File "build/bdist.linux-i686/egg/pika/adapters/base_connection.py", line 62, in __init__ 
    File "build/bdist.linux-i686/egg/pika/connection.py", line 590, in __init__ 
    File "build/bdist.linux-i686/egg/pika/connection.py", line 707, in connect 
    File "build/bdist.linux-i686/egg/pika/callback.py", line 61, in wrapper 
    File "build/bdist.linux-i686/egg/pika/callback.py", line 92, in wrapper 
    File "build/bdist.linux-i686/egg/pika/callback.py", line 232, in process 
TypeError: onConnectionError() takes exactly 1 argument (2 given) 
[[email protected] ~/house/test]$ 

我一直无法找到任何文件,显示此回调的实际方法签名。我怀疑它寻找方法的非类定义(即没有自己作为参数)。那是对的吗?如果是这样的话?那么如何才能访问类变量,以便我可以尝试重新连接连接错误?

我想我首先要找的是我的方法签名应该是什么样子?

在此先感谢

回答

0

所以看起来我能回答我自己做我的代码下面的转换问题。

通过转换我的代码执行以下操作:

self.connection = pika.SelectConnection(self.connectionParameters, 
     on_open_callback=self.onConnected, on_close_callback=self.onConnectionClosed, 
     stop_ioloop_on_close=False) 
self.connection.add_on_open_error_callback(self.onConnectionError) 

它给了我现在指向我的源代码在鼠兔新线新的崩溃地址:

File "build/bdist.linux-i686/egg/pika/adapters/select_connection.py", line 51, in __init__ 
File "build/bdist.linux-i686/egg/pika/adapters/base_connection.py", line 62, in __init__ 
File "build/bdist.linux-i686/egg/pika/connection.py", line 590, in __init__ 
File "build/bdist.linux-i686/egg/pika/connection.py", line 707, in connect 
File "build/bdist.linux-i686/egg/pika/callback.py", line 61, in wrapper 
File "build/bdist.linux-i686/egg/pika/callback.py", line 92, in wrapper 
File "build/bdist.linux-i686/egg/pika/callback.py", line 232, in process 
File "build/bdist.linux-i686/egg/pika/connection.py", line 1192, in _on_connection_error 
pika.exceptions.AMQPConnectionError: 1 

看着connection.py继而产生on_connection_error的预期方法签名

def _on_connection_error(self, connection_unused): 
    """Default behavior when the connecting connection can not connect. 

    :raises: exceptions.AMQPConnectionError 

    """ 
    raise exceptions.AMQPConnectionError(self.params.connection_attempts) 

所以即使我一样糟糕,我显然现在有我正在寻找的方法签名。

0

只因为我自己走了这条路,似乎签名已经在0.10.0更改了。现在是:

def _on_connection_error(self, connection_unused, error_message=None): 
相关问题