我正在继承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
这使我更加困惑。 我只想知道从该方法返回延期的正确方法。 (我应该注意,如果返回一个普通的简单字符串,一切都可以很好地工作)。 谢谢。
这也适用于我。这和我的代码非常相似。按照每次点击冻结,我使用0.5.9版本。 – sroj 2013-02-24 18:35:06
我想你看到的问题是在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
解决!事实上,v0.5.9在这方面被打破。检出Master分支后,一切正常。谢谢!星期五,我花了近4个小时的时间把头撞到了屏幕上。尽管如此,我建议尽快将最新版本发布到PyPi。 – sroj 2013-02-25 11:53:06