Django api вызов функции асинхронно

У меня три сервера.

Сервер A: звонит на сервер B, когда произошло какое-то событие (отправляет информацию на B)

Сервер B (Django API Server): Используя информацию из A, вызовите api сервера C.

Сервер C (сервер машинного API): Создаст задачу, следуя информации, которую сервер B отправит ему.

Я работаю на сервере B, потому что нам нужен api сервер и данные в середине сервера A и нашей машины (сервер C)

Работа моего Django api сервера (сервер B) заключается в следующем

async def check_status(token, taskUuid):
    def call():
        res = requests.get(URL+"task/"+taskUuid, headers={
            "accessToken": token
        }, verify=False)
        return res.json()

    while True:
        time.sleep(1)
        res_json = call()
        if res_json['status'] != 'RunningTask':
            print(res_json)
            #
            # do something that store info in the database
            #
            break

@list_route(methods=['post'])
def post_api(self, request):
    task_config = { 'info': request.data['info'] }
    if 'optionInfo' in request.data:
        task_config['optionInfo'] = request.data['optionInfo']

    USERNAME="username"
    PASSWORD="password"
    URL="https://{machine_ip}/"
    login_res = requests.post(URL+"auth", json={
        "username": USERNAME,
        "password": PASSWORD
    }, verify=False)

    login_json = login_res.json()
    token=login_json['AccessToken']
    ## token

    task_res = requests.post(URL+"task", headers={
        "contentType": "application/json",
        "accessToken": token
    }, json=task_config, verify=False)

    task_json = task_res.json()

    if task_json['status'] == 'RunningTask':
        taskUuid = task_json['uuid']

        ## My question is here
        asyncio.run(check_status(token, taskUuid))


        result = {
            task_created: 'success'
        }
        return Response(result, status=status.HTTP_200_OK)
    else:
        result = {
            task_created: 'failed'
        }
        return Response(result, status=status.HTTP_200_OK)

Я пытался использовать asyncio, но кажется, что это не то, что я хочу.

Вопрос в том, что я хочу сделать asyncio.run(check_status(token, taskUuid)) независимым с потоком функций...

То есть когда я вызвал asyncio.run(check_status(token, taskUuid)), запускается другой поток, и я могу напрямую вернуть Server A результат создания задачи на Server C.

Я хочу, чтобы check_status мог выполняться независимо и возвращать ответ серверу A до того, как check_status завершится.

Вернуться на верх