Celeryの概要—Pythonドキュメント

提供:Dev Guides
Celery/docs/latest/getting-started/introduction
移動先:案内検索

セロリ入門

タスクキューとは何ですか?

タスクキューは、スレッドまたはマシン間で作業を分散するためのメカニズムとして使用されます。

タスクキューの入力は、タスクと呼ばれる作業単位です。 専用のワーカープロセスは、実行する新しい作業がないかタスクキューを常に監視します。

セロリはメッセージを介して通信し、通常はブローカーを使用してクライアントとワーカーの間を仲介します。 クライアントがキューにメッセージを追加するタスクを開始するために、ブローカーはそのメッセージをワーカーに配信します。

Celeryシステムは、複数のワーカーとブローカーで構成でき、高可用性と水平スケーリングに道を譲ります。

CeleryはPythonで記述されていますが、プロトコルは任意の言語で実装できます。 Pythonに加えて、Node.js用の node-celerynode-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バージョンでの開発に追いついておらず、以前のバージョンから移行している場合は、入門チュートリアルを読む必要があります。


セロリは…

  • 単純

    Celeryは使いやすく、保守も簡単で、構成ファイルは必要ありません。

    メーリングリストIRCチャネルなど、サポートのために話しかけることができるアクティブでフレンドリーなコミュニティがあります。

    これがあなたが作ることができる最も簡単なアプリケーションの1つです:

    from celery import Celery
    
    app = Celery('hello', broker='amqp://guest@localhost//')
    
    @app.task
    def hello():
        return 'hello world'
  • 高可用性

    ワーカーとクライアントは、接続が失われたり失敗したりした場合に自動的に再試行します。一部のブローカーは、 Primary / Primary または Primary / Replica レプリケーションの方法でHAをサポートします。

  • 速い

    1つのCeleryプロセスで、1分間に数百万のタスクを処理できます。ラウンドトリップレイテンシはミリ秒未満です(RabbitMQ、librabbitmq、および最適化された設定を使用)。

  • フレキシブル

    Celery のほぼすべての部分は、独自に拡張または使用できます。カスタムプールの実装、シリアライザー、圧縮スキーム、ロギング、スケジューラー、コンシューマー、プロデューサー、ブローカートランスポートなど。


それはサポートします

  • 結果ストア

    • AMQP、Redis

    • Memcached、

    • SQLAlchemy、Django ORM

    • Apache Cassandra、Elasticsearch、Riak

    • MongoDB、CouchDB、Couchbase、ArangoDB

    • Amazon DynamoDB、Amazon S3

    • Microsoft Azure Block Blob、Microsoft Azure Cosmos DB

    • ファイルシステム


  • シリアル化

    • picklejsonyamlmsgpack

    • zlibbzip2 圧縮。

    • 暗号化メッセージの署名。



特徴

  • モニタリング

    監視イベントのストリームはワーカーによって発行され、組み込みおよび外部ツールによって使用されて、クラスターが実行していることをリアルタイムで通知します。

    続きを読む…

  • ワークフロー

    単純なワークフローと複雑なワークフローは、グループ化、チェーン、チャンクなど、「キャンバス」と呼ばれる一連の強力なプリミティブを使用して構成できます。

    続きを読む…

  • 時間と料金の制限

    1秒/分/時間あたりに実行できるタスクの数、またはタスクの実行を許可できる期間を制御できます。これは、特定のワーカーに対して、またはタスクタイプごとに個別にデフォルトとして設定できます。

    続きを読む…

  • スケジューリング

    タスクを実行する時間を秒単位またはdatetimeで指定するか、単純な間隔に基づいて定期的なイベントに定期的なタスクを使用するか、分、時間、曜日、曜日をサポートするCrontab式を使用できます。 、および月。

    続きを読む…

  • リソースリーク保護

    --max-tasks-per-childオプションは、メモリやファイル記述子など、単に制御できないリソースをリークするユーザータスクに使用されます。

    続きを読む…

  • ユーザーコンポーネント

    各ワーカーコンポーネントはカスタマイズでき、追加のコンポーネントはユーザーが定義できます。 ワーカーは、「ブートステップ」(ワーカーの内部をきめ細かく制御できる依存関係グラフ)を使用して構築されます。


フレームワークの統合

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[eventlet]
:pypi: `eventlet` プールを使用するため。
celery[gevent]
:pypi: `gevent` プールを使用するため。


トランスポートとバックエンド

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

gitで

寄稿セクションをご覧ください。