変更履歴—Pythonドキュメント

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

変更履歴

このドキュメントには、4.3.xシリーズのバグ修正リリースの変更点が含まれています。Celery4.3の新機能の概要については、 Celery 4.3(rhubarb)の新機能を参照してください。

4.3.1

発売日
2020-09-10 1:00 PM UTC + 3:00
リリースバイ
オメル・カッツ
  • つるのバージョンを5.0.0未満に制限します。

    Omer Katz による寄稿


4.3.0

発売日
2019-03-31 7:00 PM UTC + 3:00
リリースバイ
オメル・カッツ
  • 正規表現パターンまたはグロブパターンを使用したブロードキャストのサポートが複数のPidboxに追加されました。

    これにより、一度に複数のワーカーを検査またはpingできます。

    寄稿者ドミトリー・マリノフスキージェイソン開催

  • PEP420名前空間パッケージのサポートが追加されました。

    これにより、名前空間パッケージからタスクをロードできます。

    Colin Watson による寄稿

  • タスクのみのオプションではなく、設定として:setting: `acks_on_failure_or_timeout` を追加しました。

    これは元のPRにはありませんでしたが、完全を期すために追加されました。

    Omer Katz による寄稿

  • :signal: `task_received` シグナルを追加しました。

    Omer Katz による寄稿

  • Python <3.6を使用しているすべての人に発生したCLIのクラッシュを修正しました。

    クラッシュは、Python3.6で導入されたModuleNotFoundError例外を使用して、 acd6025 で導入されました。

    Omer Katz による寄稿

  • :setting: `result_expires` がNoneに設定されているときにRedis結果バックエンドを使用すると発生したクラッシュを修正しました。

    寄稿者トニルジャオメル・カッツ

  • MongoDB結果バックエンドの DNSシードリスト接続形式のサポートが追加されました。

    これには、MongoDB結果バックエンドの依存関係をインストールするときにデフォルトでインストールされる dnspython パッケージが必要です。

    George Psarakis による寄稿

  • イベントレットの最小バージョンを0.24.1にバンプします。

    George Psarakis による寄稿

  • msgpack-python パッケージを msgpack に置き換えます。

    非推奨のパッケージは使用しなくなりました。 アップグレード方法の詳細については、このリリースの重要な注意事項を参照してください。

    Daniel Hahler による寄稿

  • 現在のワーカーに登録されていないタスクであるエラーハンドラーのスケジューリングを許可します。

    これらの種類のエラーハンドラーが可能になりました。

    from celery import Signature
    Signature(
      'bar', args=['foo'],
      link_error=Signature('msg.err', queue='msg')
    ).apply_async()
  • Redisブローカーと結果バックエンドのSSLサポートに対する追加の修正と機能拡張。

    Jeremy Cohen による寄稿

コードクリーンアップ、テストカバレッジ、CIの改善:

  • オメル・カッツ
  • フロリアン・シャルダン


ドキュメントの修正:

  • オメル・カッツ
  • サミュエル・ファン
  • Amir Hossein Saeid Mehr
  • Dmytro Litvinov


4.3.0 RC2

発売日
2019-03-03 9:30 PM UTC + 2:00
リリースバイ
オメル・カッツ
  • ファイルシステムバックエンド:ファイルシステムバックエンドに意味のあるエラーメッセージを追加しました。

    Lars Rinn による寄稿

  • 新しい結果バックエンド:ArangoDBバックエンドが追加されました。

    Dilip Vamsi Moturi による寄稿

  • Django :プロジェクトディレクトリが期待どおりにシステムモジュールよりも優先されるように、追加する代わりに現在の作業ディレクトリを追加します。

    Antonin Delpeuch による寄稿

  • 最小py-redisバージョンを3.2.0にバンプします。

    以前のバージョンのpy-redisには複数のバグがあり、Celeryで問題が発生していたため、最低限必要なバージョンを3.2.0に上げる必要がありました。

    Omer Katz による寄稿

  • 依存関係:昆布の最低限必要なバージョンを4.4にバンプ

    Omer Katz による寄稿


4.3.0 RC1

発売日
2019-02-20 5:00 PM IST
リリースバイ
オメル・カッツ
  • Canvascelery.chain.apply()は、チェーンを適用するときにキーワード引数を無視しなくなりました。

    Korijn van Golen による寄稿

  • 結果セット:結果をcelery.result.ResultSetにキャッシュしようとしないでください。

    結合中に、結果キャッシュはcelery.result.ResultSet.get()を使用して入力されました。結果のいずれかに例外が含まれている場合、予期せず結合が失敗しました。

    結果キャッシュが削除されました。

    Derek Harland による寄稿

  • Application :[X23X] related_name キーワード引数が None の場合、celery.Celery.autodiscover_tasks()はパッケージ自体をインポートしようとするようになりました。

    Alex Ioannidis による寄稿

  • Windowsサポート:Windows 10では、古いPIDファイルがセロリビートの実行を妨げていました。 SystemExitが発生したときにそれらを削除するようになりました。

    :github_user: `na387` による寄稿

  • タスク:新しい:setting: `task_acks_on_failure_or_timeout` 設定を追加しました。

    失敗またはタイムアウト時にSQSメッセージを確認すると、デッドレターキューを使用できなくなります。

    新しいオプションacks_on_failure_or_timeoutを導入して、ネイティブSQSメッセージのライフサイクルに完全にフォールバックできるようにします。再試行の再配信(処理が遅い場合や失敗した場合)を使用し、定義された回数後にデッドレターキューに移行します。

    Mario Kostelac による寄稿

  • RabbitMQ Broker :RabbitMQ3.xで動作するようにHAヘッダーを調整します。

    この変更は、RabbitMQ2.xの公式サポートを終了することも意味します。

    Asif Saif Uddin による寄稿

  • コマンドラインセロリ更新エラー処理を改善しました。

    フェデリコボンドによる寄稿

  • Canvas:setting: `task_always_eager` が True に設定されたコードをサポートします。

    Axel Haustant による寄稿

  • 結果バックエンド:オプションで、タスクプロパティを結果バックエンドに保存します。

    :setting: `result_extended` 構成オプションを True に設定すると、追加のタスクプロパティを結果バックエンドに保存できます。

    John Arnold による寄稿

  • Couchbase結果バックエンド:Couchbase結果バックエンドがシリアル化形式を自動的に検出できるようにします。

    Douglas Rohde による寄稿

  • 新しい結果バックエンド:Azure Block BlobStorageの結果バックエンドが追加されました。

    バックエンドは、Azure BlobStorageを使用してスケーラブルで低コストのPaaSバックエンドを実現する紺碧のストレージライブラリの上に実装されます。

    バックエンドは、DS4仮想マシン(4 vCore、16 GB RAM)でホストされている単純なnginx / gunicorn / sanicアプリを介して負荷テストされ、600人以上の同時ユーザーを最大170RPSで処理できました。

    コミットには、バックエンド機能の検証を容易にするためのライブエンドツーエンドテストも含まれています。 テストは、 AZUREBLOCKBLOB_URL 環境変数を azureblockblob:// {ConnectionString} に設定することでアクティブになります。ここで、 ConnectionString の値は Accessにあります。 Azureポータルのストレージアカウントリソースの[キー] ペイン。

    Clemens Wolff による寄稿

  • タスクcelery.app.task.update_state()がキーワード引数を受け入れるようになりました。

    これにより、結果のバックエンドに追加のフィールドを渡すことができます。 これらのフィールドはデフォルトでは使用されていませんが、カスタム結果バックエンドはこれらを使用して結果の保存方法を決定できます。

    Christopher Dignam による寄稿

  • コンシューマーkombu.exceptions.DecodeErrorを適切に処理します。

    v2プロトコルを使用している場合、メッセージのデコード中にコンシューマーでエラーが発生したときにワーカーがクラッシュすることはなくなりました。

    Steven Sklar による寄稿

  • デプロイメント:init.dサービスの停止を修正しました。

    Marcus McHale による寄稿

  • Django :Django <1.11のサポートを終了します。

    Asif Saif Uddin による寄稿

  • Django :古いdjceleryローダーを削除します。

    Asif Saif Uddin による寄稿

  • 結果バックエンドcelery.worker.request.Requestは、celery.app.task.Contextをバックエンドのstore_result関数に渡すようになりました。

    現在、クラスは self をこれらの関数に渡しているため、django-celery-resultsを使用すると、タスクを取り消すとタスク結果データが破損していました。

    山口清裕による寄稿

  • Worker :ハートビート接続が切断された場合は再試行してください。

    以前は、壊れた接続への書き込みを試み続けていました。 これにより、イベントディスパッチャがメッセージをアウトバウンドバッファに追加し続けるため、メモリリークが発生します。

    Raf Geens による寄稿

  • Celery Beat :スケジューリング時にマイクロ秒を処理します。

    K Davis による寄稿

  • Asynpool :ソケットを閉じるときのデッドロックを修正しました。

    ソケットを閉じようとすると、celery.concurrency.asynpool.AsynPoolはキューライターをハブから削除するだけで、リーダーは削除しませんでした。 これによりファイル記述子がデッドロックになり、最終的にワーカーは新しいタスクの受け入れを停止しました。

    ここで、デッドロックを防ぐ単一のループ反復でリーダーとライターの両方のファイル記述子を閉じます。

    Joshua Engelman による寄稿

  • Celery Beat :タイムスタンプを計算するときにタイムゾーンを正しく考慮してください。

    :github_user: `yywing` による寄稿

  • Celery Beatcelery.beat.Scheduler.schedules_equal()は、 None 値であるいずれかの引数を処理できるようになりました。

    :github_user: `ratson` による寄稿

  • Documentation / Sphinx :shared_taskで装飾された関数のSphinxサポートを修正しました。

    Jon Banafato による寄稿

  • 新しい結果バックエンド:CosmosDB結果バックエンドが追加されました。

    この変更により、新しい結果バックエンドが追加されます。 バックエンドは、Azure CosmosDBを使用するpydocumentdbライブラリの上に実装され、スケーラブルでグローバルに複製された、高性能、低レイテンシ、高スループットのPaaSバックエンドを実現します。

    Clemens Wolff による寄稿

  • アプリケーション:個別の複数のアプリを単一のRabbitMQ仮想ホストで実行できるようにする構成オプションが追加されました。

    新しく追加された:setting: `event_exchange` および:setting:` control_exchange` 構成オプションにより、ユーザーは個別のPidbox交換と個別のイベント交換を使用できます。

    これにより、異なるCeleryアプリケーションを同じ仮想ホストで別々に実行できます。

    Artem Vasilyev による寄稿

  • 結果バックエンド:結果を忘れると、親の結果メタデータを忘れます。

    :github_user: `tothegump` による寄稿

  • タスクタスク引数をcelery.exceptions.MaxRetriesExceededError内に格納します。

    Anthony Ruhier による寄稿

  • 結果バックエンド:setting: `result_accept_content` 設定を追加しました。

    この機能を使用すると、結果のバックエンドにさまざまな受け入れ済みコンテンツを構成できます。

    署名されたメッセージングには特別なシリアライザー( auth )が使用されますが、結果のバックエンドに暗号化されたコンテンツが必要ないため、result_serializerはjsonに残ります。

    結果のバックエンドから署名されていないコンテンツを受け入れるために、この新しい構成オプションを導入して、バックエンドから受け入れられるコンテンツを指定しました。

    Benjamin Pereto による寄稿

  • Canvas :クラスベースのタスクのエラーコールバック処理を修正しました。

    Victor Mireyev による寄稿

  • 新しい結果バックエンド:S3結果バックエンドが追加されました。

    Florian Chardin による寄稿

  • タスク:CythonizedCeleryタスクのサポートが追加されました。

    Andrey Skabelin による寄稿

  • Riak結果バックエンド:Python3.7の非互換性の可能性についてRiakバックエンドユーザーに警告します。

    George Psarakis による寄稿

  • Pythonランタイム:Python3.7のサポートが追加されました。

    寄稿者オメル・カッツAsif Saif Uddin

  • 認証シリアライザー:認証シリアライザーを刷新しました。

    認証シリアライザーは完全なオーバーホールを受けました。 以前はひどく壊れていました。

    現在、このシリアライザーはpyOpenSSLではなく暗号化に依存しています。

    Benjamin Pereto による寄稿

  • コマンドラインセロリレポートは、他のプラットフォームの詳細とともにカーネルバージョンを報告するようになりました。

    Omer Katz による寄稿

  • Canvas :グループ内のサブコードを含むチェーンを持つコードを修正しました。

    Celeryは、次のタイプのキャンバスで最後のタスクを正しく実行するようになりました。

    c = chord(
      group([
          chain(
              dummy.si(),
              chord(
                  group([dummy.si(), dummy.si()]),
                  dummy.si(),
              ),
          ),
          chain(
              dummy.si(),
              chord(
                  group([dummy.si(), dummy.si()]),
                  dummy.si(),
              ),
          ),
      ]),
      dummy.si()
    )
    
    c.delay().get()

    Maximilien Cuony による寄稿

  • Canvas :エラーコールバックのある複雑なキャンバスでAttributeErrorが発生しなくなりました。

    this のような非常に複雑なキャンバスは、AttributeErrorを発生させなくなり、構築が妨げられなくなりました。

    このバグが発生する理由はまだわかりません。

    ManuelVázquezAcostaによる寄稿

  • コマンドライン:アプリを読み込めない場合の適切なエラーメッセージを追加しました。

    以前は、セロリは例外を除いてクラッシュしていました。

    適切なエラーメッセージを出力します。

    Omer Katz による寄稿

  • タスク:setting: `task_default_priority` 設定を追加しました。

    :setting: `task_default_priority` 設定を使用して、タスクのデフォルトの優先度を設定できるようになりました。 特定のタスクに優先順位が指定されていない場合は、設定の値が使用されます。

    :github_user: `madprogrammer` による寄稿

  • 依存関係:昆布の最低限必要なバージョンを4.3に、ビリヤードを3.6にバンプします。

    Asif Saif Uddin による寄稿

  • 結果バックエンド:メモリリークを修正しました。

    vine でPython2の完全なweakrefサポートを追加した後、AsyncResultコールバックpromiseのバインドされたメソッドへの弱参照を再導入しました。 詳細については、 celery / celery#4839 をご覧ください。

    George Psarakis および:github_user: `monsterxx03` による寄稿。

  • タスクの実行:熱心なタスクのラウンドトリップシリアル化を修正しました。

    熱心なタスクのラウンドトリップシリアル化を行う場合、 serializer 引数がcelery.app.task.Task.apply_async()の呼び出しに存在しない限り、タスクシリアライザーは常にJSONになります。 シリアライザー引数が存在するが 'pickle' の場合、 serialization.loads にどのコンテンツタイプを受け入れるかを指定しないと、pickle-serializedオブジェクトを逆シリアル化できないため、例外が発生します。 プロデューサーのシリアライザーはなしに設定されているようで、デフォルトでJSONシリアル化になっています。

    シリアライザー引数が存在する場合はcelery.app.task.Task.apply_async()に、存在しない場合はプロデューサーのシリアライザーを(順番に)引き続き使用しますなし 。 Producer のシリアライザーが None の場合、Celeryアプリの task_serializer 構成エントリをシリアライザーとして使用します。

    ブレットジャクソンによる寄稿

  • Redis結果バックエンドcelery.backends.redis.ResultConsumerクラスは、celery.backends.redis.ResultConsumer.drain_events()の前にcelery.backends.redis.ResultConsumer.start()が呼び出されることを想定しなくなりました。

    これにより、Geventワーカープールを使用する際の競合状態が修正されます。

    Noam Kush による寄稿

  • タスク:setting: `task_inherit_parent_priority` 設定を追加しました。

    :setting: `task_inherit_parent_priority` 構成オプションを True に設定すると、Celeryタスクはそれにリンクされている前のタスクの優先度を継承します。

    例:

    c = celery.chain(
      add.s(2), # priority=None
      add.s(3).set(priority=5), # priority=5
      add.s(4), # priority=5
      add.s(5).set(priority=3), # priority=3
      add.s(6), # priority=3
    )
    @app.task(bind=True)
    def child_task(self):
      pass
    
    @app.task(bind=True)
    def parent_task(self):
      child_task.delay()
    
    # child_task will also have priority=5
    parent_task.apply_async(args=[], priority=5)

    :github_user: `madprogrammer` による寄稿

  • Canvas:setting: `result_chord_join_timeout` 設定を追加しました。

    以前は、celery.result.GroupResult.join()のタイムアウトは3秒に固定されていました。

    :setting: `result_chord_join_timeout` 設定で、変更できるようになりました。

    :github_user: `srafehi` による寄稿

コードクリーンアップ、テストカバレッジ、CIの改善:

  • Jon Dufresne
  • Asif Saif Uddin
  • オメル・カッツ
  • ブレットジャクソン
  • ブルーノアラ
  • :github_user: `tothegump`
  • ボジャン・ヨバノビッチ
  • フロリアン・シャルダン
  • :github_user: `walterqian`
  • ファビアンベッカー
  • ラース・リン
  • :github_user: `madprogrammer`
  • シアラン・コートニー


ドキュメントの修正:

  • ルイスM。 カブイ
  • ダッシュウィンターソン
  • シャナバスM
  • ブレット・ランドール
  • PrzemysławSuliga
  • ジョシュアシュミット
  • Asif Saif Uddin
  • シャオドン
  • Vikas Prasad
  • ジェイミー・アレッシオ
  • ラース・クルーゼ
  • Guilherme Caminha
  • アンドレア・ラバグリエッティ
  • Itay Bittan
  • ノアホール
  • 鵬偉康
  • マリアッタウィジャヤ
  • エド・モーリー
  • PawełAdamczak
  • :github_user: `CoffeeExpress`
  • :github_user: `aviadatsnyk`
  • ブライアンシュレーダー
  • Josue Balandrano Coronel
  • トムクランシー
  • セバスティアン・ウォジチェチョフスキ
  • メイサムアザド
  • ウィレム・ティアート
  • チャールズ・チャン
  • オメル・カッツ
  • ミリンド釈迦族