Celery 4.4(Cliffs)の新機能—Pythonドキュメント
セロリ4.4(クリフ)の新機能
- 著者
- Asif Saif Uddin(
auvipy at gmail.com
)
変更履歴
新しいドキュメントではメジャーバージョンの変更について説明しています。バグ修正リリース(0.0.x)の変更を一覧表示する変更履歴もありますが、古いシリーズは履歴セクションにアーカイブされています。 。
Celeryは、Pythonで分散システムを維持するために必要なツールを操作に提供しながら、大量のメッセージを処理するためのシンプルで柔軟性があり、信頼性の高い分散プログラミングフレームワークです。
これは、リアルタイム処理に重点を置いたタスクキューであり、タスクのスケジューリングもサポートしています。
Celeryには、ユーザーと寄稿者の大規模で多様なコミュニティがあります。IRCまたはメーリングリストでに参加する必要があります。
セロリの詳細については、はじめにをお読みください。
このバージョンは以前のバージョンと下位互換性がありますが、次のセクションを読むことが重要です。
このバージョンは、CPython 2.7、3.5、3.6、3.7、および3.8で公式にサポートされており、PyPy2およびPyPy3でもサポートされています。
目次
このバージョンにアップグレードする前に、必ず重要な注意事項をお読みください。
序文
4.4.0リリースでは、Pythonに最適なタスク実行プラットフォームを提供するための取り組みが引き続き改善されています。
このリリースのコードネームは Cliffs で、これは私のお気に入りのトラックの1つです。
このリリースは、主にバグ修正と開発者の使いやすさの向上に焦点を当てています。 多くの長年のバグ、使いやすさの問題、ドキュメントの問題、マイナーな拡張の問題が潰され、開発者の全体的なエクスペリエンスが向上しました。
Celery 4.4は、Python3.8およびpypy36-7.2をサポートする最初のリリースです。
現在、次世代のタスク実行プラットフォームであるCelery 5の開発に着手しているため、Celery 5の安定リリースの前に少なくともさらに4.xが期待されており、コミュニティの需要とサポートに応じて少なくとも1年間サポートされます。
また、コントリビューションの摩擦を減らすことに重点を置き、コントリビューションツールを更新しました。
— Asif Saif Uddin
貢献者の壁
ノート
この壁はgitの履歴から自動的に生成されたため、残念ながら、メーリングリストの質問への回答など、より重要なことを支援する人は含まれていません。
Celery4.3からのアップグレード
いくつかの重大な変更があるため、以下の重要な注意事項をお読みください。
重要な注意事項
サポートされているPythonバージョン
サポートされているPythonバージョンは次のとおりです。
- CPython 2.7
- CPython 3.5
- CPython 3.6
- CPython 3.7
- CPython 3.8
- PyPy2.7 7.2(
pypy2
) - PyPy3.5 7.1(
pypy3
) - PyPy3.6 7.2(
pypy3
)
Python3.4のサポートを終了しました
Celeryには、Python2.7またはPython3.5以降のいずれかが必要になりました。
Python3.4は2019年3月にEOLに達しました。 努力を集中するために、このバージョンではPython3.4のサポートを終了しました。
それでもPython3.4を使用してCeleryを実行する必要がある場合は、Celery4.3を引き続き使用できます。 ただし、Python 3.4にはこれ以上のセキュリティパッチが適用されないため、サポートされているPythonバージョンにアップグレードすることをお勧めします。
昆布
このリリース以降、最低限必要なバージョンは昆布4.6.6です。
ビリヤード
このリリース以降、最低限必要なバージョンはビリヤード3.6.1です。
Redisメッセージブローカー
以前のバージョンのredis-pyには複数のバグがあり、Celeryで問題が発生していたため、最低限必要なバージョンを3.3.0に上げる必要がありました。
Redis結果バックエンド
以前のバージョンのredis-pyには複数のバグがあり、Celeryで問題が発生していたため、最低限必要なバージョンを3.3.0に上げる必要がありました。
DynamoDB結果バックエンド
DynamoDB結果バックエンドはTTLサポートを取得しました。 その結果、最小のboto3バージョンは1.9.178に引き上げられました。これは、DynamoDBのTTLをサポートする最初のバージョンです。
S3結果バックエンド
現在のAWSAPIの変更に対応するために、boto3の最小バージョンが1.9.125に引き上げられました。
SQSメッセージブローカー
現在のAWSAPIの変更に対応するために、boto3の最小バージョンが1.9.125に引き上げられました。
構成
CELERY_TASK_RESULT_EXPIRES は CELERY_RESULT_EXPIRES に置き換えられました。
ニュース
タスクプール
スレッド化されたタスクプール
concurrent.futures.ThreadPoolExecutor を使用してスレッド化されたタスクプールを再導入しました。
以前のスレッド化されたタスクプールは実験的なものでした。 さらに、廃止された threadpool パッケージに基づいていました。
:setting: `worker_pool` を 'threads`に設定するか、 –pool threads を celery worker コマンドに渡すことで、新しいスレッドタスクプールを使用できます。
結果のバックエンド
ElasticSearch結果バックエンド
HTTP基本認証のサポート
URIでユーザー名とパスワードを指定することにより、ElasticSearch結果バックエンドを使用するときにHTTP基本認証を使用できるようになりました。
以前は、それらは無視され、認証されていない要求のみが発行されていました。
MongoDB結果バックエンド
認証ソースと認証方法のサポート
URIオプションを使用して、MongoDBのauthSourceとauthMethodを指定できるようになりました。 次のURIはまさにそれを行います:
mongodb://user:[email protected]/?authSource=the_database&authMechanism=SCRAM-SHA-256
さまざまなオプションの詳細については、ドキュメントを参照してください。
タスク
タスククラス定義に再試行属性を含めることができるようになりました
クラスベースのタスクで autoretry_for 、 retry_kwargs 、 retry_backoff 、 retry_backoff_max 、 retry_jitter を使用できるようになりました。
class BaseTaskWithRetry(Task):
autoretry_for = (TypeError,)
retry_kwargs = {'max_retries': 5}
retry_backoff = True
retry_backoff_max = 700
retry_jitter = False
キャンバス
タスクを熱心に置き換える
熱心に実行されるタスクで self.replace()を呼び出すことができるようになりました。 これらは、非同期で実行されるタスクとまったく同じように機能します。
グループの連鎖
グループを連鎖させると、単一のグループにはなりません。
以下は、2つのグループを1つに結合するために使用されました。 今、彼らは次々に正しく実行します:
>>> result = group(add.si(1, 2), add.si(1, 2)) | group(tsum.s(), tsum.s()).delay()
>>> result.get()
[6, 6]