私はDjango WebサイトにAPIを統合しました。 APIを介した完全な注文には、5つの要求と応答が送受信される必要があります。最後の2つのリクエストは、順次送信されることが非常に重要ではありません。私はこれらの2つの要求をセロリの課題に割り当てました。Celeryタスクがブローカーによって割り当てられていません
シナリオ:10件の注文を処理するリクエストを送信するので、各注文には5件のリクエストがあり、うち2件がセロリタスクに割り当てられています。したがって、セロリには、ブローカーによって割り当てられる合計10のタスクがあります。これらのタスクのそれぞれには2つの要求があります。
結果:API呼び出しの実行中にセラーリに10個のタスクが割り当てられていないため、10個の各セットについて、完了したものは5または4または6などとなります。毎回、処理されない2つまたは3つのタスクがあります。私は何がタスクをブローカーによって割り当てられないようにさせているのか分かりません。
私はタスクを呼び出すためにdelay()コマンドを使用しています。私task.pyファイルには、このタスクへの呼び出しがこの
process_jobs.delay(self, job, **response_arg)
process_jobsのように見えるDBに保存された応答で順次次々行われる2つのHTTP要求が含まれています。この
from celery import shared_task
from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)
@shared_task
def process_jobs(client_obj, job, **kwargs):
# do task related work
のように多少見えます。
これで問題が解決しない場合
process_jobs.delay(job, **response_arg)
と
process_jobs.delay(self, job, **response_arg)
を交換
確かに、確認してお知らせします。 –
@ user778907 –