まず、redis の List はキューに相当します。先入れ先出しルールを実装できます
brpop が使用される理由は、キューに何もない場合、ポップアップ要素が存在するまでブロックされるためです。キュー内にあるか待機タイムアウトです。
アクセスが多すぎて、サーバーの処理速度が遅すぎます。ユーザーが待機するたびにサーバーがフィードバックを返す場合、時間が長すぎて http 接続がタイムアウトになり、サーバー エラーが発生します。
マルチスレッドを使用して、常に物事 (データ) をキューに入れるクライアントがあります。ユーザー数が多い アクセス状況
キューからプリントを連続的に取り出し、各プリントのスリープ時間を2秒に設定するサーバーがある
key [value, value] key 代表List的名字, [value, ...] 是值
クライアント client.py
import random import threading import redis import config lock = threading.Lock() lock.acquire() lock.release() pool = redis.ConnectionPool(host=config.HOST, port=config.PORT, decode_responses=True, password=config.PASSWORD) r = redis.Redis(connection_pool=pool) # 客户往redis 中放数据 def fun1(redisObj): value = random.randint(0, 100) # 往ccc列表中存放 print("开始发送数据:", value) redisObj.lpush("print",str(value)) for i in range(100): threading.Thread(target=fun1, args=(r,)).start()
サーバー server.py
import redis import time import config pool = redis.ConnectionPool(host=config.HOST, port=config.PORT, decode_responses=True, password=config.PASSWORD) r = redis.Redis(connection_pool=pool) # 服务端不断的取 while True: value = r.brpop("print") time.sleep(2) print(value)
方法は次のとおりです。接続を関数として扱い、エラーをキャプチャし、問題が発生したときに再接続します。
rree以上がRedis+Pythonをメッセージキューとして使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。