Celery 2.4の変更履歴—Pythonドキュメント
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/json
⇒application/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.state
(celerymon
/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
ファイルがアルファベット順にソートされるようになりました。また、お気づきかもしれませんが、新機能/修正の貢献者が変更ログに記載されています。