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

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

Celery2.4の変更履歴

2.4.5

発売日
2011-12-02 05:00 pm GMT
リリースバイ
ソレムに聞く
  • 定期的なタスク間隔のスケジュールが誤って切り捨てられたため、一部の定期的なタスクが早期に実行されました。

  • ビートログへの人間化された時間の記録がより詳細になりました。

  • ドキュメントの「はじめに」の部分にある新しいバックエンドとブローカーセクション

    これにより、古い「その他のキュー」チュートリアルが置き換えられ、MongoDB、Beanstalk、およびCouchDBのドキュメントが追加されます。


2.4.4

発売日
2011-11-25 04:00 pm GMT
リリースバイ
ソレムに聞く

セキュリティ修正

  • [セキュリティ: CELERYSA-0001 ] --uid / --gid引数が celery multiの場合、デーモンは実際のIDではなく有効なIDを設定していました] celeryd_detachセロリビートセロリイベントが使用されました。

    これは、特権が適切に削除されなかったこと、および後でスーパーバイザー特権を取り戻すことができることを意味します。


修正

  • プロセスプール:シャットダウン時のまれなデッドロックを修正しました(問題#523)。

    Ionel MariesChristianによって提供された修正。

  • Webhookタスクが間違ったHTTPPOSTヘッダーを発行しました(問題#515)。

    Content-Type ヘッダーがapplication/jsonapplication/x-www-form-urlencodedから変更され、適切な Content-Length ヘッダーが追加されました。

    Mitarによって提供された修正。

  • デーモン化チュートリアル:Djangoとvirtualenvを一緒に使用する構成例を追加します(問題#505)。

    Juan IgnacioCatalanoによる寄稿。

  • 汎用init-scriptsは、logおよびpidファイルディレクトリを自動的に作成するようになりました(問題#545)。

    クリス・ストリーターによる寄稿。


2.4.3

発売日
2011-11-22 06:00 pm GMT
リリースバイ
ソレムに聞く
  • celeryctl のモジュールインポートのタイプミスを修正しました(問題#538)。

    修正はChrisStreeterによって提供されました。


2.4.2

発売日
2011-11-14 12:00 pm GMT
リリースバイ
ソレムに聞く
  • プログラムモジュールは相対インポートを使用しなくなったため、python -m celery.bin.nameを実行できます。


2.4.1

発売日
2011-11-07 06:00 pm GMT
リリースバイ
ソレムに聞く
  • celeryctl inspectコマンドの出力がありませんでした。
  • プロセスプール:アイドル状態のCPU使用率を減らすために、ポーリング間隔を短くします。
  • プロセスプール:MaybeEncodingErrorがExceptionInfoにラップされていませんでした(問題#524)。
  • ワーカー:タスクコンシューマーの開始後に発生するエラーを無音にします。
  • ロギング:stdoutリダイレクトログメッセージのUnicodeを書き込めなかったバグを修正しました(問題#522)。


2.4.0

発売日
2011-11-04 04:00 pm GMT
リリースバイ
ソレムに聞く

重要な注意事項

  • Python3をサポートするようになりました。

  • ワーカープロセス処理のデッドロックを修正しました(問題#496)。

    ロギングライブラリのミューテックスがフォーク後に適切にリセットされなかったため、新しい子プロセスを生成した後にデッドロックが発生する可能性がありました。

    このバグに影響を与える症状は、子プロセスのワーカーが機能していないため、ワーカーがタスクの処理を停止するだけであるということです。 maxtasksperchildまたは時間制限を有効にすると、このバグが発生する可能性が高くなりました。

    これは、 http://bugs.python.org/issue6721#msg140215の回避策です。

    これによりロギングライブラリのロックが修正されますが、カスタムコードによって導入された、親プロセスで初期化された他のロックが存在する可能性があることに注意してください。

    HarmVerhagenによって提供された修正。

  • AMQP結果バックエンド:デフォルトで結果の有効期限が切れるようになりました。

    デフォルトの有効期限値は、:setting: `CELERY_TASK_RESULT_EXPIRES` 設定から取得されるようになりました。

    古い:setting: `CELERY_AMQP_TASK_RESULT_EXPIRES` 設定は非推奨になり、バージョン4.0で削除されます。

    これは、結果のバックエンドにRabbitMQ 2.1.0以降が必要であり、古いバージョンで実行している場合は有効期限を無効にする必要があることを意味することに注意してください。 :setting: `CELERY_TASK_RESULT_EXPIRES` 設定を無効にすることで、これを行うことができます。

    CELERY_TASK_RESULT_EXPIRES = None
  • イベントレット:シャットダウンの問題を修正しました(問題#457)。

  • ブローカートランスポートをURLを使用して指定できるようになりました

    代わりに、ブローカーをURLとして指定できるようになりました。 このURLの形式は次のとおりです。

    transport://user:password@hostname:port/virtual_host

    たとえば、デフォルトのブローカーは次のように記述されます。

    amqp://guest:guest@localhost:5672//

    ホストがホスト名だけでなくURLとして識別されるように、スキームが必要です。 ユーザー、パスワード、ポート、およびvirtual_hostはオプションであり、デフォルトでは特定のトランスポートのデフォルト値になります。

    ノート

    パスコンポーネント(virtual_host)は常にスラッシュで始まることに注意してください。 これは、仮想ホスト(空)と'/'を区別するために必要です。これらは、どちらも受け入れ可能な仮想ホスト名です。

    '/'の仮想ホストは次のようになります。

    amqp://guest:guest@localhost:5672//

    (空)の仮想ホストは次のようになります。

    amqp://guest:guest@localhost:5672/

    したがって、パスコンポーネントの先頭のスラッシュは常に必要です。

    さらに、:setting: `BROKER_URL` 設定がBROKER_HOSTのエイリアスとして追加されました。 URLと構成の両方で指定されたブローカー設定はすべて無視されます。設定がURLで指定されていない場合、構成の値がデフォルトとして使用されます。

    また、プログラムは、コマンドラインでブローカーURLを指定する--brokerオプションをサポートするようになりました。

    $ celery worker -b redis://localhost
    
    $ celery inspect -b amqp://guest:guest@localhost//e

    環境変数 CELERY_BROKER_URLを使用して、使用されているデフォルトのブローカーを簡単にオーバーライドすることもできます。

  • 非推奨のcelery.loaders.setup_loader()機能は削除されました。

  • :setting: `CELERY_TASK_ERROR_WHITELIST` 設定は、より柔軟なアプローチに置き換えられました(問題#447)。

    エラーメール送信ロジックは、Task.ErrorMailとして利用可能になり、celery.utils.mailに(参照用に)実装されています。

    エラーメールクラスをサブクラス化して、エラーメッセージの送信時期を完全に制御できるため、個別のホワイトリスト設定が不要になります。

    :setting: `CELERY_TASK_ERROR_WHITELIST` 設定は非推奨になり、バージョン4.0で完全に削除されます。

  • 追加の非推奨

    次の関数は非推奨になり、バージョン4.0で削除される予定です。

    古い機能

    celery.loaders.current_loader

    celery.current_app.loader

    celery.loaders.load_settings

    celery.current_app.conf

    celery.execute.apply

    Task.apply

    celery.execute.apply_async

    Task.apply_async

    celery.execute.delay_task

    celery.execute.send_task

    次の設定は非推奨になり、バージョン4.0で削除される予定です。

    古い設定

    CELERYD_LOG_LEVEL

    celery worker --loglevel=

    CELERYD_LOG_FILE

    celery worker --logfile=

    CELERYBEAT_LOG_LEVEL

    celery beat --loglevel=

    CELERYBEAT_LOG_FILE

    celery beat --logfile=

    CELERYMON_LOG_LEVEL

    celerymon --loglevel=

    CELERYMON_LOG_FILE

    celerymon --logfile=



ニュース

  • :pypi: `pyparsing` に依存しなくなりました。

  • 現在、昆布1.4.3に依存しています。

  • CELERY_IMPORTSをスカラー値にすることができるようになりました(問題#485)。

    タプルの唯一の要素の後にコンマを追加するのを忘れるのは簡単です。これは、初心者に影響を与えることがよくあります。

    タプルを使用しても意味がないため、ドキュメントではおそらく例のリストを使用する必要があります。 それにもかかわらず、タプルを使用したチュートリアルはたくさんあり、この変更は新しいユーザーの助けになるはずです。

    :github_user: `jsaxon-cars` によって提案されました。

  • スレッドプール使用時のメモリリークを修正しました(問題#486)。

    KornelijusSurvilaによる寄稿。

  • statedbは終了時に保存されませんでした。

    これは修正され、--statedbが有効になっている場合、以前に取り消されたタスクを再度記憶する必要があります。

  • :setting: `EMAIL_USE_TLS` を追加して、安全なSMTP接続を有効にします(問題#418)。

    StefanKjartanssonによる寄稿。

  • メッセージ形式のドキュメントに記載されているように、タスクメッセージの欠落しているフィールドを処理するようになりました。

    • 必須フィールドのスローがありません@InvalidTaskError

    • 欠落しているargs / kwargsは空であると見なされます。

    クリスチェンバリンによって寄稿されました。

  • celery.events.statecelerymon / celeryev)の競合状態が修正され、反復中にタスク情報が削除されていました(問題#501)。

  • Cache、Cassandra、MongoDB、Redis、およびTyrantバックエンドは、:setting: `CELERY_RESULT_SERIALIZER` 設定を尊重するようになりました(問題#435)。

    これは、データベース(Django / SQLAlchemy)バックエンドのみが現在カスタムシリアライザーの使用をサポートしていないことを意味します。

    SteeveMorinによる寄稿

  • ロギングコールはメッセージを手動でフォーマットしなくなりましたが、それをロギングシステムに委任するため、Sentryなどのツールでメッセージを簡単に処理できます(問題#445)。

    クリスアダムスによって寄稿されました。

  • multiは、プロセスがシャットダウンするのを待つstop_verifyコマンドをサポートするようになりました。

  • キャッシュキーがユニコードの場合、キャッシュバックエンドが機能しませんでした(問題#504)。

    NeilChintombyによって提供された修正。

  • 新しい設定:setting: `CELERY_RESULT_DB_SHORT_LIVED_SESSIONS` が追加されました。これを有効にすると、SQLAlchemyセッションのキャッシュが無効になります(問題#449)。

    LeoDiracによる寄稿。

  • すべての結果バックエンドが__reduce__を実装するようになり、ピクルス化できるようになりました(問題#441)。

    RemyNoelによる修正

  • multiはWindowsでは機能しませんでした(問題#472)。

  • 新しいスタイルのCELERY_REDIS_*設定が、古いREDIS_*構成キーよりも優先されるようになりました(問題#508)。

    JoshuaGinsbergによる修正

  • Generic beat init-scriptは、 bash -e を設定しなくなりました(問題#510)。

    RogerHuによって提供された修正。

  • Chordsは2.2より前の redis-server バージョンではうまく機能しないことが文書化されています。

    DanMcGeeによる寄稿。

  • :setting: `CELERYBEAT_MAX_LOOP_INTERVAL` 設定は尊重されませんでした。

  • inspect.registered_tasksは、名前の一貫性を保つためにinspect.registeredに名前が変更されました。

    以前の名前は引き続きエイリアスとして使用できます。

    MherMovsisyanによる寄稿

  • ワーカーは、セーフガードなしでargsとkwargsの文字列表現をログに記録しました(問題#480)。

  • RHEL init-script:ワーカーの起動優先度を変更しました。

    RHELでのMySQLのデフォルトの開始/停止の優先順位は次のとおりです。

    # chkconfig: - 64 36

    したがって、Celeryがデータベースをブローカー/メッセージストアとして使用している場合は、データベースが稼働した後に開始する必要があります。そうしないと、エラーが発生します。 このコミットにより、init-scriptの優先度が次のように変更されます。

    # chkconfig: - 85 15

    これはサードパーティアプリケーションのデフォルトの推奨設定であり、Celeryがデータベースサービスの後に開始され、終了する前にシャットダウンされることを保証します。

    YuryVによる寄稿。 ザイツェフ。

  • KeyValueStoreBackend.get_manyは、timeout引数を尊重しませんでした(問題#512)。

  • beat / eventsの--workdirオプションは構成が試行される前に chdir(2)しませんでした(問題#506)。

  • 2.4のサポートを廃止した後、絶対インポートを利用できるため、モジュールに正しく名前を付けることができるようになりました。

    そのため、次の内部モジュールの名前が変更されました。

    celery.concurrency.evlet-> celery.concurrency.eventlet celery.concurrency.evg-> celery.concurrency.gevent

  • AUTHORSファイルがアルファベット順にソートされるようになりました。

    また、お気づきかもしれませんが、新機能/修正の貢献者が変更ログに記載されています。