Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Flask-SocketIO kembali berlangganan

Saya Memecahkan meneruskan aplikasi sebagai argumen ke kelas dan menggunakannya konteks seperti yang disarankan oleh deskripsi kesalahan, tetapi namespace juga diperlukan:

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. Berikan file ke Pekerjaan Aktif / pekerjaan latar belakang

  2. Laravel:Bagaimana Cara Memeriksa Ketersediaan Redis?

  3. Bagaimana cara mencari di redis untuk kunci hash?

  4. Apakah perintah UNLINK selalu lebih baik daripada perintah DEL?

  5. Bagaimana saya bisa mendapatkan semua set di redis?