Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Zasubskrybuj ponownie Flask-SocketIO

Rozwiązałem przekazanie aplikacji jako argumentu do klasy i użycie kontekstu zgodnie z opisem błędu, ale przestrzeń nazw jest również konieczna:

class Listener(threading.Thread):
    def __init__(self, r, channels, app):
    threading.Thread.__init__(self)
    self.daemon = True
    self.redis = r
    self.pubsub = self.redis.pubsub()
    self.pubsub.psubscribe(channels)
    self.app = app

    def work(self, item):
        with app.app_context():
            if isinstance(item['data'], bytes):
                try:
                    msg = item['data'].decode('utf-8')
                    decode_msg = json.loads(msg)                
                    if decode_msg['type'] == 'UPDATE_TASK':
                        send(json.dumps({"type":"UPDATE_TASK"}), room='home', namespace='/')
                    #_send_task_message()
                except ValueError as e:
                    log.error("Error decoding msg to microservice: %s", str(e))

    def run(self):
        for item in self.pubsub.listen():
            self.work(item)

if __name__ == '__main__':

    r = redis.Redis()
    client = Listener(r, ['/bobguarana/socketio'], app)
    client.start()

    socketio.run(debug=True, app=app, port=8080)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak utworzyć połączenie Redis z Master i Slave?

  2. Jak atomowo usunąć miliony kluczy pasujących do wzorca za pomocą czystego Redis?

  3. Redis — jakikolwiek sposób na wyzwolenie zdarzenia, gdy wartość nie jest już aktywnie zapisywana?

  4. Błąd pola w obiekcie „target” w polu „”:wartość odrzucona []; kody [typeMismatch.target.,typeMismatch.,typeMismatch.java.util.Date,typeMismatch]

  5. W jaki sposób StackExchange.Redis używa wielu punktów końcowych i połączeń?