2013-02-22 26 views
2

我正在继承WampCraServerProtocol(来自Autobahn Python),并且覆盖了getAuthSecret。据我所知,现在我可以返回来自该方法的延迟,但是,做一个简单的测试时:如何在使用Autobahn Wamp Cra时使用延期返回认证密码?

def getAuthSecret(self, authKey):   
    deferred = Deferred() 
    deferred.callback("secret") 
    return deferred 

...我爬WampCraClientProtocol以下错误:

Authentication Error! http://api.wamp.ws/error#generic Deferred instance has no attribute '__len__' None

好,那已经是令人困惑的事了。推迟getAuthSecret的回报是否有特殊要求?

好了,继续前进,基于这样的错误,我添加了一个(简单)LEN方法将推迟我回:

def getAuthSecret(self, authKey): 
    #secret_deferred = self.factory.get_secret(authKey) 
    deferred = Deferred() 
    deferred.__len__ = lambda: 1 
    deferred.callback("secret") 
    return deferred 

...在这种情况下,我得到:

Authentication Error! http://api.wamp.ws/error#generic unsupported operand type(s) for +: 'instance' and 'str' None 

这使我更加困惑。 我只想知道从该方法返回延期的正确方法。 (我应该注意,如果返回一个普通的简单字符串,一切都可以很好地工作)。 谢谢。

回答

1

这个工作对我来说:

https://github.com/tavendo/AutobahnPython/blob/master/examples/wamp/authentication/server.py#L72

什么AutobahnPython版本您使用的?

更新:

v0.5.9有关于推迟的身份验证(见下面的评论)的错误。它固定在v0.5.14上。 Wamp Cra延迟的身份验证在该版本上正常工作。

+0

这也适用于我。这和我的代码非常相似。按照每次点击冻结,我使用0.5.9版本。 – sroj 2013-02-24 18:35:06

+1

我想你看到的问题是在0.5.9后修复的(在提交https://github.com/tavendo/AutobahnPython/commit/3b2cd64d2489c4924095c6e406b2676a85967be8)。我建议在GitHub上使用master或maintenance_v0_5分支,因为在0.5.9之后还没有发布,但是在PyPi上发布了。 – oberstet 2013-02-25 07:25:10

+0

解决!事实上,v0.5.9在这方面被打破。检出Master分支后,一切正常。谢谢!星期五,我花了近4个小时的时间把头撞到了屏幕上。尽管如此,我建议尽快将最新版本发布到PyPi。 – sroj 2013-02-25 11:53:06

相关问题