У меня есть этот код, где я использую 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 разработан. Пожалуйста, помогите мне решить эту проблему.