Celery 2.3の変更履歴—Pythonドキュメント
セロリ2.3の変更履歴
2.3.4
- 発売日
- 2011-11-25 04:00 pm GMT
- リリースバイ
- ソレムに聞く
セキュリティ修正
[セキュリティ: CELERYSA-0001 ]
--uid
/--gid
引数が celery multi 、の場合、デーモンは実際のIDではなく有効なIDを設定していました] celeryd_detach 、セロリビート、セロリイベントが使用されました。これは、特権が適切に削除されなかったこと、および後でスーパーバイザー特権を取り戻すことができることを意味します。
修正
- 2.4から2.3への#455のバックポートされた修正。
- StateDBはシャットダウン時に保存されませんでした。
- ハードタイム制限を超えたときにワーカーがハングすることがある問題を修正しました。
2.3.3
- 発売日
- 2011-16-09 05:00 pm BST
- リリースバイ
- Mher Movsisyan
- モンキーパッチ
sys.stdout
は、置換オブジェクトがisatty()
を定義していない場合、ワーカーがクラッシュする可能性がありました(問題#477)。 /etc/default/celeryd
のCELERYD
オプションは、一般的なinitスクリプトでは使用しないでください。
2.3.2
- 発売日
- 2011-10-07 05:00 pm BST
- リリースバイ
- ソレムに聞く
ニュース
改善された寄稿ガイド。
Celeryに貢献したい場合は、 Contributing Gudie をお読みください。
私たちはすべてのスキルレベルの貢献者を探していますので、遠慮なく!
昆布1.3.1に依存
Task.request
に、現在のワーカーホスト名が含まれるようになりました(問題#460)。task.request.hostname
として入手可能。- アプリのサブクラスがピクルスにする方法を拡張するのが簡単になりました。
(
celery.app.AppPickler
を参照)。
修正
パージ/ discard_all が正しく機能していませんでした(問題#455)。
ログメッセージの色付けは、非ASCIIデータを適切に処理しませんでした(問題#427)。
[Windows]マルチプロセッシングプールが
os.kill
をインポートしようとしましたが、これは利用できません(問題#450)。タスクがハードタイム制限を超えたためにワーカーが応答しなくなる可能性があるケースを修正します。
:event: `task-sent` イベントがイベント参照にありませんでした。
ResultSet.iterate
は、終了時に結果を返すようになりました(問題#459)。これは以前はそうではありませんでしたが、ドキュメントにはこれが予期された動作であると記載されていました。
タスクが直接呼び出された場合(
__call__
を使用)、再試行は実行されなくなりました。代わりに、
retry
に渡された例外が再発生します。自動スケールが有効になっている場合、イベントレットがクラッシュしなくなりました。
イベントレットプールの拡大と縮小はまだサポートされていません。
py24
ターゲットがtox.ini
から削除されました。
2.3.1
- 発売日
- 2011-08-07 08:00 pm BST
- リリースバイ
- ソレムに聞く
修正
- :setting: `CELERY_AMQP_TASK_RESULT_EXPIRES` 設定が機能しなかったため、タスクの状態を公開しようとしているときにフロートをシリアル化できないというAMQP関連のエラーが発生しました(問題#446)。
2.3.0
- 発売日
- 2011-08-05 12:00 pm BST
- テスト済み
- CPython:2.5、2.6、2.7; PyPy:1.5; Jython:2.5.2
- リリースバイ
- ソレムに聞く
重要な注意事項
昆布1.2.1が必要になりました
結果はデフォルトで無効になりました。
多くの場合、ユーザーが結果を消費せず、数千のキューが発生するため、AMQPバックエンドは適切なデフォルトではありませんでした。
キューは未使用のままにしておくと期限切れになるように構成できますが、これは最近のRabbitMQバージョン(2.1.1以降)でのみ使用可能であったため、デフォルトで有効にすることはできませんでした。
この変更により、結果バックエンドを有効にすることは意識的な選択となり、ユーザーがドキュメントを読み、特定のバックエンドに共通する落とし穴に気付くようになることを願っています。
デフォルトのバックエンドはダミーバックエンド(
celery.backends.base.DisabledBackend
)になりました。 状態の保存は単に何もしないことであり、AsyncResult.wait()、. result、.stateなどです。NotImplementedError
を発生させ、結果のバックエンドを構成するようにユーザーに指示します。バックエンドの選択については、結果バックエンドを参照してください。
AMQPバックエンドであった以前のデフォルトに依存している場合は、アップグレードする前にこれを明示的に設定する必要があります。
CELERY_RESULT_BACKEND = 'amqp'
ノート
:pypi: `django-celery` ユーザーの場合、デフォルトのバックエンドは
database
のままであり、結果はデフォルトで無効になっていません。Debian init-scriptsは非推奨になり、generic-init.dinit-scriptsが採用されました。
さらに、
celerybeat
およびceleryev
の一般的なinitスクリプトが追加されました。
ニュース
自動接続プールのサポート。
プールは、タスクの呼び出し、ブロードキャストコマンドの送信、AMQP結果バックエンドを使用した結果の取得など、ブローカー接続を必要とするすべてのものによって使用されます。
プールはデフォルトで無効になっていますが、:setting: `BROKER_POOL_LIMIT` 設定を構成することで有効にできます。
BROKER_POOL_LIMIT = 10
10の制限は、最大10の同時接続が共存できることを意味します。 シングルスレッド環境では単一の接続のみが使用されますが、制限を超えた同時環境(スレッド、グリーンレットなど、プロセスではない)では、接続を取得しようとするとスレッドがブロックされ、接続が解放されるのを待ちます。 これは、制限を選択するときに考慮すべき点です。
None
または0の制限は制限がないことを意味し、接続は毎回確立および閉じられます。コードの紹介(タスクセットコールバック)。
個々のタスクに時間制限を設定できるようになりました。
タスクのソフトおよびハードの時間制限を設定するには、
time_limit
およびsoft_time_limit
属性を使用します。import time @task(time_limit=60, soft_time_limit=30) def sleeptask(seconds): time.sleep(seconds)
属性が設定されていない場合、ワーカーのデフォルトの時間制限が使用されます。
このバージョンの新機能として、
time_limit()
リモートコントロールコマンドを使用して、実行時にタスクの制限時間を変更することもできます。>>> from celery.task import control >>> control.time_limit('tasks.sleeptask', ... soft=60, hard=120, reply=True) [{'worker1.example.com': {'ok': 'time limits set successfully'}}]
制限時間の変更後に実行を開始するタスクのみが影響を受けます。
ノート
ソフト時間制限は、
SIGUSR1
信号がないWindowsまたはその他のプラットフォームでは引き続き機能しません。- Redisバックエンド構成ディレクティブ名が変更され、
CELERY_
プレフィックス。古い設定名
と置換する
REDIS_HOST
CELERY_REDIS_HOST
REDIS_PORT
CELERY_REDIS_PORT
REDIS_DB
CELERY_REDIS_DB
REDIS_PASSWORD
CELERY_REDIS_PASSWORD
古い名前は引き続きサポートされていますが、廃止されるまで保留されています。
PyPy:PyPy 1.5で実行している場合、使用されるデフォルトのプール実装はマルチプロセッシングになりました。
multi:「パススルー」オプションをサポートするようになりました。
パススルーオプションを使用すると、構成ファイルなしでCeleryを簡単に使用したり、コマンドラインに直前のオプションを追加したりできます。
使用例:
$ celery multi start 4 -c 2 -- broker.host=amqp.example.com \ broker.vhost=/ \ celery.disable_rate_limits=yes
celerybeat
:接続の確立を再試行します(問題#419)。celeryctl
:新しいlist bindings
コマンド。使用されているブローカートランスポートに応じて、現在または使用可能なすべてのバインディングを一覧表示します。
ハートビートは30秒ごと(以前は2分ごと)に送信されるようになりました。
ResultSet.join_native()
およびiter_native()
が、RedisおよびCacheの結果バックエンドでサポートされるようになりました。これは、
join()
の最適化されたバージョンであり、基礎となるバックエンド機能を使用して、一度に複数の結果をフェッチします。:setting: `EMAIL_USE_SSL` 設定を有効にすることで、エラーメールの送信時にSSLを使用できるようになりました。
events.default_dispatcher()
:接続プールを使用してイベントディスパッチャーインスタンスを簡単に取得するためのコンテキストマネージャー。構成モジュールのインポートエラーはもう沈黙しません。
ResultSet.iterate:
timeout
、propagate
、およびinterval
引数をサポートするようになりました。with_default_connection
->with default_connection
TaskPool.apply_async:キーワード引数
callbacks
およびerrbacks
はcallback
およびerrback
に名前が変更され、リストの代わりに単一のスカラー値を取ります。プロセスのクリーンアップ中に発生するエラーを伝播しなくなりました(問題#365)
以前に保存したタスクセットの結果を削除する
TaskSetResult.delete()
を追加しました。celerybeat
は、シャットダウン時だけでなく、3分ごとに同期するようになりました(問題#382)。モニターが不明なイベントを適切に処理するようになったため、ユーザー定義のイベントが表示されます。
Windowsでタスクを終了すると、子プロセスのすべてのタスクも終了するようになりました(問題#384)。
ワーカー:
-I|--include
オプションは、指定されたモジュールをインポートするために常に現在のディレクトリを検索するようになりました。Cassandraバックエンド:TTLを使用して結果を期限切れにするようになりました。
funtests
の機能テストスイートは実際に正しく機能し、テストに合格しています。
修正
celeryev
はpidfileを2回作成しようとしていました。- celery.contrib.batches:タスクがサイレントに失敗する問題を修正しました(問題#393)。
- ロギングオブジェクトが「
CELERY_TASK_ERROR_WHITE_LIST
がすべてのローダーで正しく初期化されるようになりました。celeryd_detach
はコマンドライン構成を通過するようになりました。- リモートコントロールコマンド
add_consumer
は、キューがすでに消費されている場合は何も実行しないようになりました。