Celeryの概要—Pythonドキュメント
セロリ入門
タスクキューとは何ですか?
タスクキューは、スレッドまたはマシン間で作業を分散するためのメカニズムとして使用されます。
タスクキューの入力は、タスクと呼ばれる作業単位です。 専用のワーカープロセスは、実行する新しい作業がないかタスクキューを常に監視します。
セロリはメッセージを介して通信し、通常はブローカーを使用してクライアントとワーカーの間を仲介します。 クライアントがキューにメッセージを追加するタスクを開始するために、ブローカーはそのメッセージをワーカーに配信します。
Celeryシステムは、複数のワーカーとブローカーで構成でき、高可用性と水平スケーリングに道を譲ります。
CeleryはPythonで記述されていますが、プロトコルは任意の言語で実装できます。 Pythonに加えて、Node.js用の node-celery と node-celery-ts 、および PHPクライアントがあります。
言語の相互運用性は、HTTPエンドポイントを公開し、それを要求するタスク(Webhook)を持つことでも実現できます。
私が必要なものは何?
バージョン要件
Celeryバージョン5.1はで実行されます
- Python❨3.6、3.7、3.8❩
- PyPy3.6❨7.3❩
Celery4.xはPython2.7をサポートする最後のバージョンであり、Celery5.xにはPython3.6以降が必要です。 Celery 5.1.xには、Python3.6以降も必要です。
古いバージョンのPythonを実行している場合は、古いバージョンのCeleryを実行している必要があります。
- Python2.7またはPython3.5:Celeryシリーズ4.4以前。
- Python 2.6:Celeryシリーズ3.1以前。
- Python 2.5:Celeryシリーズ3.0以前。
- Python2.4はCeleryシリーズ2.2以前でした。
Celeryは最小限の資金でプロジェクトを行うため、MicrosoftWindowsはサポートしていません。 そのプラットフォームに関連する問題を開かないでください。
Celery では、メッセージを送受信するためにメッセージトランスポートが必要です。 RabbitMQおよびRedisブローカートランスポートは完全な機能ですが、ローカル開発にSQLiteを使用するなど、他の無数の実験的ソリューションもサポートされています。
Celery は、単一のマシン、複数のマシン、またはデータセンター間で実行できます。
はじめに
Celeryを初めて使用する場合、または3.1バージョンでの開発に追いついておらず、以前のバージョンから移行している場合は、入門チュートリアルを読む必要があります。
セロリは…
単純
高可用性
ワーカーとクライアントは、接続が失われたり失敗したりした場合に自動的に再試行します。一部のブローカーは、 Primary / Primary または Primary / Replica レプリケーションの方法でHAをサポートします。
速い
1つのCeleryプロセスで、1分間に数百万のタスクを処理できます。ラウンドトリップレイテンシはミリ秒未満です(RabbitMQ、librabbitmq、および最適化された設定を使用)。
フレキシブル
Celery のほぼすべての部分は、独自に拡張または使用できます。カスタムプールの実装、シリアライザー、圧縮スキーム、ロギング、スケジューラー、コンシューマー、プロデューサー、ブローカートランスポートなど。
それはサポートします
|
|
特徴
|
フレームワークの統合
CeleryはWebフレームワークと簡単に統合でき、一部のフレームワークには統合パッケージもあります。
Django については、 Django の最初のステップを参照してください。
統合パッケージは厳密には必要ありませんが、開発を容易にすることができ、 fork(2)でデータベース接続を閉じるなどの重要なフックを追加することもあります。
クイックジャンプ
したい⟶
インストール
Celeryは、Python Package Index(PyPI)またはソースからインストールできます。
pip を使用してインストールするには:
$ pip install -U Celery
バンドル
Celeryは、Celeryのインストールに使用できるバンドルのグループと、特定の機能の依存関係も定義します。
これらは、要件または pip コマンドラインで角かっこを使用して指定できます。 複数のバンドルは、コンマで区切ることで指定できます。
$ pip install "celery[librabbitmq]"
$ pip install "celery[librabbitmq,redis,auth,msgpack]"
次のバンドルが利用可能です。
シリアライザー
celery[auth]
auth
セキュリティシリアライザーを使用するため。celery[msgpack]
- msgpackシリアライザーを使用するため。
celery[yaml]
- yamlシリアライザーを使用するため。
トランスポートとバックエンド
celery[librabbitmq]
librabbitmqCライブラリを使用するため。
celery[redis]
メッセージトランスポートまたは結果のバックエンドとしてRedisを使用するため。
celery[sqs]
メッセージトランスポートとしてAmazonSQSを使用する場合( Experimental )。
celery[tblib]
:setting: `task_remote_tracebacks` 機能を使用する場合。
celery[memcache]
結果のバックエンドとしてMemcachedを使用する場合(:pypi: `pylibmc` を使用)
celery[pymemcache]
結果のバックエンドとしてMemcachedを使用するため(純粋なPython実装)。
celery[cassandra]
DataStaxドライバーを使用した結果バックエンドとしてApacheCassandraを使用した場合。
celery[couchbase]
結果のバックエンドとしてCouchbaseを使用するため。
celery[arangodb]
結果のバックエンドとしてArangoDBを使用するため。
celery[elasticsearch]
結果のバックエンドとしてElasticsearchを使用するため。
celery[riak]
結果のバックエンドとしてRiakを使用するため。
celery[dynamodb]
結果のバックエンドとしてAWSDynamoDBを使用するため。
celery[zookeeper]
Zookeeperをメッセージトランスポートとして使用するため。
celery[sqlalchemy]
結果バックエンドとしてSQLAlchemyを使用するため(サポート)。
celery[pyro]
Pyro4メッセージトランスポート( Experimental )を使用するため。
celery[slmq]
SoftLayerメッセージ・キュー・トランスポート(実験的)を使用するため。
celery[consul]
Consul.io Key / Valueストアをメッセージトランスポートまたは結果バックエンド( Experimental )として使用するため。
celery[django]
Djangoサポートで可能な最低バージョンを指定します。
要件でこれを使用するべきではありません。情報提供のみを目的としてここにあります。
ソースからのダウンロードとインストール
PyPIからCeleryの最新バージョンをダウンロードします。
https://pypi.org/project/celery/
次の手順でインストールできます。
$ tar xvfz celery-0.0.0.tar.gz
$ cd celery-0.0.0
$ python setup.py build
# python setup.py install
現在virtualenvを使用していない場合は、最後のコマンドを特権ユーザーとして実行する必要があります。
開発版を使用する
ピップ付き
Celery開発バージョンには、:pypi: `kombu` 、:pypi:` amqp` 、:pypi: `billiard` 、およびの開発バージョンも必要です。 :pypi: `vine` 。
次のpipコマンドを使用して、これらの最新のスナップショットをインストールできます。
$ pip install https://github.com/celery/celery/zipball/master#egg=celery
$ pip install https://github.com/celery/billiard/zipball/master#egg=billiard
$ pip install https://github.com/celery/py-amqp/zipball/master#egg=amqp
$ pip install https://github.com/celery/kombu/zipball/master#egg=kombu
$ pip install https://github.com/celery/vine/zipball/master#egg=vine