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

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

セロリ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/celerydCELERYDオプションは、一般的な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の制限は制限がないことを意味し、接続は毎回確立および閉じられます。

  • コードの紹介(タスクセットコールバック)。

    コードは、タスクセット内のすべてのタスクの実行が終了した後にのみ実行されるタスクです。 これは、から採用された「タスクセットコールバック」のファンシーな用語です。

    これはすべての結果バックエンドで機能しますが、現在、最良の実装はRedis結果バックエンドによって提供されています。

    コードの例を次に示します。

    >>> chord(add.subtask((i, i))
    ...         for i in xrange(100))(tsum.subtask()).get()
    9900

    詳細については、ユーザーガイド Chordsセクションをお読みください。

  • 個々のタスクに時間制限を設定できるようになりました。

    タスクのソフトおよびハードの時間制限を設定するには、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:timeoutpropagate、およびinterval引数をサポートするようになりました。

  • with_default_connection-> with default_connection

  • TaskPool.apply_async:キーワード引数callbacksおよびerrbackscallbackおよび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は、キューがすでに消費されている場合は何も実行しないようになりました。