2012-01-19 4 views
0

Я хочу использовать Redis для таблицы лидеров данных моей игры, и я видел в одном из вопросов StackOverflow, что txredis является хорошим вариантом. Однако я не могу найти ни одного примера, который мог бы привести меня к написанию некоторых кодов. Кто-нибудь может мне помочь? Знаете ли вы, что на каком-либо веб-сайте есть примеры? Буду признателен за вашу помощь.Как написать асинхронное витое приложение для клиентского сервера связи с использованием txredis

Я пытаюсь сделать что-то подобное, однако он не работает. Клиент TCP соединяет, но когда он посылает «я: ххх» он отключен немедленно:

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()` 

ответ

0
  1. Google для «txredis»
  2. Нажмите на первую ссылку, тем txredis проекта на GitHub
  3. Нажмите на первая запись в исходном браузере, «примеры»
  4. Нажмите на первой записи в исходном браузере «demo.py»
+0

Спасибо, я знаю, что этот пример. Не могли бы вы посмотреть на код, который я только что добавил. – Bora

+0

Ваш вопрос: «Есть ли примеры txredis?» на что я ответил. Теперь ваш вопрос: «Что не так с этой программой, использующей txredis?», Это совсем другой вопрос. Я думаю, вы должны принять этот ответ и задать новый вопрос. –

+0

ok сделают это, спасибо за ваш ответ. – Bora

 Смежные вопросы

  • Нет связанных вопросов^_^