Сервер для обеспечения связи между двумя разными протоколами
У меня два разных устройства. X и Y. X и Y оба используют разные протоколы. X использует протокол HTTP. Y использует протокол MQTT. В то время как HTTP является синхронным протоколом (запрос -> ответ), MQTT является асинхронным протоколом (например, websocket).
Теперь существует сервер между X и Y. И X, и Y не могут напрямую взаимодействовать друг с другом, но только через сервер. X должен отправить запросы в Y и получить ответ от Y. Когда X хочет отправить запрос в Y, он отправляет его на сервер по протоколу HTTP. Сервер отправляет запрос Y и отправляет полученный ответ от Y к X.
X ------- HTTP-запрос -----> Сервер ------- MQTT ------> Y
|
| Timeout
|
X <---- HTTP ответ ----> Сервер <----- MQTT -------- Y
Теперь это означает, что когда сервер получает запрос, он должен переслать запрос к Y и затем ждать ответа от Y. Если Y не отвечает в течение тайм-аута (давайте назовем это response timeout
) он должен отправить ответ об ошибке X. Если Y ответит, он должен отправить этот ответ X. Теперь все это должно происходить в цикле ответа на запрос.
Теперь мой вопрос заключается в том, как реализовать этот сервер. Я использую Django Framework для написания серверов. Но в этом случае я не могу ждать несколько секунд (response timeout
) для каждого запроса, поскольку это будет замедлять работу сервера, поскольку для каждой команды, отправляемой на сервер, будет выделен поток, ожидающий ответа от Y. Я предполагаю, что мне нужно будет использовать какое-то асинхронное программирование.
Если у кого-то есть предложение относительно того, какую среду или библиотеку мне следует использовать, пожалуйста, укажите мне правильное направление. Любые ссылки на существующие проекты с аналогичной реализацией будут полезны.