私はすでに元の質問に答えましたが、Redisリストは非常に信頼性が高く、Python モジュールのそれらのサポートは Queue のようなオブジェクトを実装するのに非常に使いやすいと付け加えたいと思います。これらには、複数のプロセスだけでなく、複数のノード (ネットワーク全体) にスケールアウトできるという利点があります。
基本的にそれらを使用するには、キュー名のキー (文字列) を選択するだけで、プロデューサーにプッシュさせ、ワーカー (タスク コンシューマー) にそのキーからのポップをブロックするループを持たせます。
Redis BLPOP および BRPOP コマンドはすべて、キーのリスト (リスト/キュー) とオプションのタイムアウト値を取ります。タプル (キー、値) または None (タイムアウト時) を返します。そのため、おなじみのselect()の構造に非常によく似た(ただし、はるかに高いレベルの) イベント駆動型システムを簡単に作成できます。注意しなければならないのは、キーの欠落と無効なキー タイプだけです (もちろん、例外ハンドラでキュー操作をラップするだけです)。(共有Redisサーバーで他のアプリケーションが停止した場合、キーを削除するか、キューとして使用していたキーを文字列/整数または他のタイプの値に置き換えます...まあ、その時点で別の問題があります)。:)
このモデルのもう 1 つの利点は、Redis がそのデータをディスクに永続化することです。そのため、許可することを選択した場合、ワーク キューはシステムの再起動後も存続する可能性があります。
(もちろん、本当にそうしたいのであれば、単純な Queue を SQLlite やその他の SQL システムのテーブルとして実装することもできます。順序付けのためのある種の自動インクリメント インデックスと、各項目をマークするための列を使用するだけで、"完了" (消費); ただし、これには、Redis が「すぐに使える」ものを使用するよりも多少複雑になります)。