Azure IoT, как убрать задержку из функции асин c - PullRequest
0 голосов
/ 01 мая 2020

У меня есть этот код, где я использую 2 пограничных модуля, 1-й модуль имеет Invoke_method_on_module и send_message_to_output, где модуль должен вызываться и отправлять сообщение, 2-й модуль должен получать его с помощью receive_message_on_input.

Вот часть кода:

async def method_listener(module_client):
        while True:
            print("Module listener")
            method_request = await module_client.receive_method_request("start")
            # Wait for unknown method calls
            # set response payload
            payload = {"result": True, "data": "Received"}
            status = 200  # set return status code
            print("executed method: " + method_request.name)
            print("Payload")
            method_response = MethodResponse.create_from_method_request(
                method_request, status, payload
            )
            # send response
            await module_client.send_method_response(method_response)
            await send_test_message(method_request)
  # send response
    listeners = await asyncio.gather(method_listener(module_client))
    # asyncio.run(await send_test_message(2))
    listeners.cancel()

    # finally, disconnect
    await module_client.disconnect()


async def send_test_message(method_request):
    global module_client
    print("Invoking message to next Module")
    msg = method_request.name
    await module_client.send_message_to_output(msg, "outputmsg")
    print("Done Invoke")

Что мне нужно:

Я вызываю модуль с помощью API, и я хочу, чтобы весь процесс был завершен с 1 вызовом ( вызов и отправка сообщения и прослушивание)

Что происходит:

Когда я отправляю вызов из API один раз, отправка сообщения или прослушивание в следующем модуле занимает 8 - 10 секунд, некоторые, где это берет латентность. Но когда я отправляю invoke дважды из API (отправляя Twice одновременно), он отправляет или прослушивает сразу, и не возникает задержка во всем процессе?

сценарий: отправка API один раз занимает 8 секунд, а отправка дважды - работа как можно скорее. Как?

Что я хочу знать:

Как решить эту проблему? Это какая-то логическая ошибка или характер программирования Asyn c или как azure iot sdk разработан. Пожалуйста, помогите мне решить эту проблему.

...