redis - 如何使用 txredis 编写用于客户端服务器通信的异步扭曲应用程序

标签 redis twisted factory reactor

我想将 redis 用于我的游戏排行榜数据,我在 Stackoverflow 的一个问题中看到 txredis 是一个不错的选择。但是我找不到任何可能导致我开始编写一些代码的示例。有谁能够帮我?你知道有例子的网站吗?我将不胜感激你的帮助。

我正在尝试做类似的事情,但是它不起作用。 TCP 客户端连接,但当它发送“i:xxx”时,它立即断开连接:

from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor
from twisted.internet import defer
from txredis.protocol import Redis
from twisted.internet import protocol

# Hostname and Port number of a redis server
HOST = 'localhost'
PORT = 6379

@defer.inlineCallbacks


def main():
    clientCreator = protocol.ClientCreator(reactor, Redis)
    redis = yield clientCreator.connectTCP(HOST, PORT)    
    res = yield redis.ping()
    print res

    info = yield redis.info()
    print info

    res = yield redis.set('test', 42)
    print res

    test = yield redis.get('test')
    print test



class LeaderBoard(Protocol):
        def connectionMade(self):
            self.factory.clients.append(self)
        clientCreator = protocol.ClientCreator(reactor, Redis)
        redis = yield clientCreator.connectTCP(HOST, PORT)
    def connectionLost(self, reason):
        print "client removed",self
        self.factory.clients.remove(self)
    def dataReceived(self, data):
        defer.inlineCallbacks
        a = data.split(':')
        if len(a) > 1:
            command = a[0]
            content = a[1]

            res = yield self.redis.set('test', 42)
            print res            

            msg = ""
            score = ""

            if command == "i":
                self.name = content
                msg = self.name + " has joined"

                print msg
            elif command== "msg":
                msg = self.name + ": " + content
                self.message(msg)
    def message(self, message):
        self.transport.write(message + '\n')

if __name__ == "__main__":

    factory = Factory()

    factory.protocol = LeaderBoard
    factory.clients = []

    reactor.listenTCP(80, factory)
    print "Iphone Chat server started"
    reactor.run()`

最佳答案

  1. Google 搜索“txredis”
  2. 点击第一个链接,github上的txredis项目
  3. 单击源浏览器中的第一个条目“示例”
  4. 单击源浏览器中的第一个条目“demo.py”

关于redis - 如何使用 txredis 编写用于客户端服务器通信的异步扭曲应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8934277/

相关文章:

python - 如何使用扭曲的 python api 将额外参数传递给回调寄存器函数?

python - 在线程中执行 Twisted reactor.run()?

design-patterns - 工厂采用静态方法实现

带有类型化的 Swift 协议(protocol)。协议(protocol)只能用作通用约束

redis - 如何使用 ReJSON 设置嵌套值(对象)

message-queue - 如何使用 Celery 保证消息传递?

php - 如何为Redis设置密码?

redis - ServiceStack Redis 客户端发生意外错误

python - 为什么 Twisted 的 DeferredFilesystemLocks 对于并发使用不安全?

laravel - 如何将参数传递给 Laravel 工厂?