djangoで30分のAPI呼び出しを実行する方法

foxtrot3009

私のdjangoアプリには、アクション(再公開アクション)によってトリガーされる関数があります。再公開エンドポイントがヒットした後、その関数がトリガーされ、別のAPI呼び出しを介して30分間そのステータスを確認します。その関数は次のとおりです。

timeout = time.time() + 60 * 30
        published_flag = False
    while time.time() < timeout:
                data = requests.get(apiUrl + dist_id).json()
                try:
                    published_flag = data['flags']
                    if published_flag:
                        break
                    else:
                        time.sleep(5)
                        continue
                except KeyError:
                    break

このタイムアウトは30分で、非常に長くなります。ただし、フラグのステータスが変わる最悪のシナリオは30分です。このアクションは複数回トリガーできます(複数の再発行ボタンを押すことができます)。エンドポイントが機能するには30分が長すぎるため、エンドポイントは基本的にタイムアウトします。そこで、Webソケットを介してデータをフロントエンドにプッシュします。

これを行うためのよりスマートな方法はありますか?

一度

Enixが書いたように、Celeryを使用する必要があります。しかし、あなたは多くの労働者を必要としません。実際には、sleepセロリの内部タスクを呼び出すことはありません後で再試行できます。したがって、すべてのタスクは非常に短く、必要な作業者は1〜2人です。

@app.task(bind=True, max_retries=60*30/5)
def do_whatever(self, dist_id):
    data = requests.get(apiUrl + dist_id).json()
    if 'flags' not in data:
        self.retry(countdown=5)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

DjangoでJSONREST呼び出しを実行する方法

分類Dev

djangoで外部APIへの呼び出しを制限する方法

分類Dev

相互に依存する3つのAPI呼び出しを実行する方法は?

分類Dev

SubmitReactで別のAPI呼び出しからの情報を必要とするAPI呼び出しを行う方法

分類Dev

1回の呼び出しで複数のajax呼び出し関数を実行する方法

分類Dev

C#で階層間呼び出しを実行する方法

分類Dev

asyncio python で関数呼び出しを実行する方法

分類Dev

Pythonで関数呼び出しの実行時間を制限する方法

分類Dev

API呼び出しを行うRailsRspecテストを分離する方法

分類Dev

AngularのHttpInterceptorで実際のhttp呼び出しが行われる前に、別のhttp apiを(インターセプトなしで)呼び出します

分類Dev

状態に特定の値がある場合にAPI呼び出しを実行する方法

分類Dev

反応として、Render()の前にAPI呼び出しを実行してリダイレクトするための最良の方法は何ですか?

分類Dev

複数の呼び出しでajaxを使用してphpで2番目の呼び出しクエリを実行する方法

分類Dev

Angular HttpClient:最初のAPI呼び出しが終了するまでさらにAPI呼び出しを行います

分類Dev

javascriptで呼び出されるまで関数の実行を停止する方法

分類Dev

MySQL Connector C ++ APIで1回の関数呼び出しで複数のクエリを実行する適切な方法は何ですか?

分類Dev

別のAJAX呼び出し内でAJAX呼び出しを実行する(jQUERYなし)

分類Dev

JavaScript:複数のREST呼び出しを次々に実行する正しい方法

分類Dev

Javaで呼び出し中の(現在の)シェルでシェルコマンドを実行する方法

分類Dev

このような再試行可能な呼び出しを実装するScalaの方法は何ですか?

分類Dev

nodejs-関数内で複数の非同期呼び出しを実行するための最良の方法は?

分類Dev

アンカータグでajax呼び出しを実行する方法

分類Dev

複数の連鎖された$ .post()呼び出しを連続した順序で実行する方法は?

分類Dev

mockito:実際の実装で呼び出しを確認する方法?

分類Dev

1回のコールバック呼び出しだけで非同期呼び出しを再帰的に実行する方法はありますか?

分類Dev

VB6-1回の呼び出しで複数のSQLクエリを実行する方法

分類Dev

iframe内でのAJAX呼び出しの完了に基づいて関数を実行する方法

分類Dev

_wsystemの呼び出しでpsexecを実行する際の問題

分類Dev

1回の呼び出しで複数のmysqlクエリを実行する

Related 関連記事

  1. 1

    DjangoでJSONREST呼び出しを実行する方法

  2. 2

    djangoで外部APIへの呼び出しを制限する方法

  3. 3

    相互に依存する3つのAPI呼び出しを実行する方法は?

  4. 4

    SubmitReactで別のAPI呼び出しからの情報を必要とするAPI呼び出しを行う方法

  5. 5

    1回の呼び出しで複数のajax呼び出し関数を実行する方法

  6. 6

    C#で階層間呼び出しを実行する方法

  7. 7

    asyncio python で関数呼び出しを実行する方法

  8. 8

    Pythonで関数呼び出しの実行時間を制限する方法

  9. 9

    API呼び出しを行うRailsRspecテストを分離する方法

  10. 10

    AngularのHttpInterceptorで実際のhttp呼び出しが行われる前に、別のhttp apiを(インターセプトなしで)呼び出します

  11. 11

    状態に特定の値がある場合にAPI呼び出しを実行する方法

  12. 12

    反応として、Render()の前にAPI呼び出しを実行してリダイレクトするための最良の方法は何ですか?

  13. 13

    複数の呼び出しでajaxを使用してphpで2番目の呼び出しクエリを実行する方法

  14. 14

    Angular HttpClient:最初のAPI呼び出しが終了するまでさらにAPI呼び出しを行います

  15. 15

    javascriptで呼び出されるまで関数の実行を停止する方法

  16. 16

    MySQL Connector C ++ APIで1回の関数呼び出しで複数のクエリを実行する適切な方法は何ですか?

  17. 17

    別のAJAX呼び出し内でAJAX呼び出しを実行する(jQUERYなし)

  18. 18

    JavaScript:複数のREST呼び出しを次々に実行する正しい方法

  19. 19

    Javaで呼び出し中の(現在の)シェルでシェルコマンドを実行する方法

  20. 20

    このような再試行可能な呼び出しを実装するScalaの方法は何ですか?

  21. 21

    nodejs-関数内で複数の非同期呼び出しを実行するための最良の方法は?

  22. 22

    アンカータグでajax呼び出しを実行する方法

  23. 23

    複数の連鎖された$ .post()呼び出しを連続した順序で実行する方法は?

  24. 24

    mockito:実際の実装で呼び出しを確認する方法?

  25. 25

    1回のコールバック呼び出しだけで非同期呼び出しを再帰的に実行する方法はありますか?

  26. 26

    VB6-1回の呼び出しで複数のSQLクエリを実行する方法

  27. 27

    iframe内でのAJAX呼び出しの完了に基づいて関数を実行する方法

  28. 28

    _wsystemの呼び出しでpsexecを実行する際の問題

  29. 29

    1回の呼び出しで複数のmysqlクエリを実行する

ホットタグ

アーカイブ