次のようなデーモンを書きたいと思っています。
- zip ファイルへのパスを含むキュー (sqs、rabbit-mq など) からメッセージを読み取ります
- 「このジョブは処理中です」などと言って、データベース内のレコードを更新します
- 前述のアーカイブのコンテンツを読み取り、見つかった各ファイルのファイル メタデータから選別された情報を使用して、データベースに行を挿入します
- 各ファイルを s3 に複製します
- zipファイルを削除します
- ジョブを「完了」とマークする
- キュー内の次のメッセージを読み取り、繰り返します
これはサービスとして実行され、誰かが Web フロントエンド経由でファイルをアップロードしたときにキューに入れられたメッセージによって開始されます。アップローダはすぐに結果を確認する必要はありませんが、アップロードはバックグラウンドで適切に処理されます。
私はPythonに堪能なので、最初に頭に浮かぶのは、各リクエストを処理して上記のプロセスを実行するためのツイストを備えた単純なサーバーを作成することです。しかし、マルチユーザー コンテキストで実行されるこのようなものを作成したことはありません。1 分または 1 時間に数百のアップロードを処理するわけではありませんが、一度に複数のアップロードを処理できると便利です。また、マルチスレッド アプリケーションを作成したり、ブロッキングなどの問題に対処したりすることにもあまり詳しくありません。
過去に人々はこれをどのように解決しましたか?私が取ることができる他のいくつかのアプローチは何ですか?
助けと議論を前もってありがとう!