2016-12-29 3 views
1

私はPythonで書いているサービスを持っています。これは、ユーザーがタスクを異なる間隔で実行するようにスケジュールすることを可能にします。タスクの例としては、次のようになります。間隔を置いてタスクをスケジュールするのに最適なツールですか?

  • タスクA:10秒ごとに
  • のステータスチェックを行う
  • タスクB:3秒ごとのステータスチェックを行う
  • タスクC:すべての15のステータスチェックを行います秒

タスクは互いに独立して実行する必要があります。また、前の試行が完了するまでTask Aが再び実行できないようにしたいと思います。タスクの数は動的なので、実行する間隔も同じであることに注意してください。

私はRabbitMQを見てきましたが、この種のことができるかどうかを判断するのは苦労しています。

答えて

1

私は最近あなたが達成しようとしていることを行うためにセロリーを使用しています。セロリを使用すると、基本的にタスクキューに配布される関数であるタスクを作成できます。セロリのタスクは、x秒ごとまたはそれ以上のcrontab形式の方法を問わず、定期的に実行させることもできます。

セロリドキュメントで、定期的な作業を探して、実行しようとしていることが適切かどうかを確認します。セロリは、rabbitmqまたはredis(主に)を使用します。各タスクは、メインプログラムから独立したスレッドで実行されます。

1

タスクの種類ごとに1つずつ、いくつかのタスクキューをセットアップする必要があります。次に、新しいタスクがある場合は、キューに入れてください。これにより、連続して、順序どおりに、そして一定の間隔であなたの選択が確実に行われます。

RabbitMQ/Celeryインスタンスを維持する代わりに、Amazon Simple Queue Service (SQS)またはAmazon Simple Workflow Serviceを考慮してください。

using Python boto3 library with SQSについての情報を表示してください。

関連する問題