Celery 4.4(Cliffs)の新機能—Pythonドキュメント

提供:Dev Guides
Celery/docs/latest/history/whatsnew-4.4
移動先:案内検索

セロリ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]