使用Python、Twisted、Redis和txredisapi。在
建立连接后,如何获取订阅和取消订阅频道的SubscriberProtocol?在
我想我需要获取SubscriberProtocol的实例,然后我可以使用“subscribe”和“unsubscribe”方法,但不知道如何获取它。在
代码示例:
import txredisapi as redis
class RedisListenerProtocol(redis.SubscriberProtocol):
def connectionMade(self):
self.subscribe("channelName")
def messageReceived(self, pattern, channel, message):
print "pattern=%s, channel=%s message=%s" %(pattern, channel, message)
def connectionLost(self, reason):
print "lost connection:", reason
class RedisListenerFactory(redis.SubscriberFactory):
maxDelay = 120
continueTrying = True
protocol = RedisListenerProtocol
然后从这些课程之外:
^{pr2}$有什么建议吗?在
谢谢!在
下一个代码解决了问题:
@defer.inlineCallbacks
def subUnsub():
deferred = yield ClientCreator(reactor, RedisListenerProtocol).connectTCP(HOST, PORT)
deferred.subscribe("newChannelName")
deferred.unsubscribe("channelName")
说明: 使用“ClientCreator”在带有标志的函数中获取SubscriberProtocol的实例@defer.inlineCallbacks不要忘记“yield”关键字等待完成延迟的数据。然后你可以使用这个延迟订阅和取消订阅。在
在我的例子中,我忘记了yield关键字,因此deferred并不完整,suscribe和unsubscribe方法也不起作用。在
相关问题 更多 >
编程相关推荐