5

私は現在、Django-CeleryアプリでDjango1.3を使用するプロジェクトに取り組んでいます。ちなみに、セロリに不慣れな方はぜひチェックしてみてください。

管理ページの機能について具体的な質問があります。

セロリタスクを使用して、サードパーティパートナーへのRESTfulAPI呼び出しを行っています。これらの呼び出しは実際にはユーザーアクションによって開始されるため、この場合にセロリタスクが非常に役立つことがわかります。

何らかの理由でコールバックが失敗した場合に、管理者がコールバックを再送信できるようにする方法についてのユーザーストーリーがあります。現在、コールバックが標準のHTTP応答の失敗で失敗した場合、セロリの再試行メカニズムを使用して、さまざまな間隔で自動的に再送信しています。ただし、これらのコールバックは数千のパートナーの1つに対して行われる可能性があり(そうです、たくさんあります)、すべてのパートナーが失敗応答として標準のHTTP応答コードを使用するわけではありません。

簡単に言えば、管理インターフェースを介してセロリタスクを再送信できることを示すものをオンラインで見つけることができませんでした。私は誰かがこれにいくらかの光を当てることができることを望んでいました。持っている機能はかなり明白なようですが、そのような機能がない場合は、それには十分な理由があると確信しています。誰かが理由を説明できれば、それを行う方法がなければ、私はそれが大好きです。セロリの内部の働きについてもっと知りたいだけです。

みんな、ありがとう!言葉遣いで申し訳ありませんが、時々私はぶらぶらする傾向があります。

4

1 に答える 1

2

2つのアプローチを試すことができます。

1:モデルの小さなハック:

ブールフィールドを使用して、celery_retryのような名前を付けることができ、モデルのsaveメソッドでは次のようになります。

def save(self, *args, **kwargs):
    if self.celery_retry and self.user.is_superuser():
          celery_task.apply_async()
    self.celery_retry = False
    super(MyModel, self).save(*args, **kwargs)

これは単なるアイデアであり、セロリタスクをいつどのように提出するかを自分で決めることができます。

2:管理テンプレートを拡張します:

管理テンプレートを拡張して、タスクを再送信するビューへのハイパーリンクを配置できます。

于 2011-08-23T16:44:20.550 に答える