Я разрабатываю веб-интерфейс для определенного аппаратного устройства, которое предоставляет собственный настраиваемый API.Указанный веб-интерфейс может управлять несколькими устройствами одновременно.Данные извлекаются из устройства посредством опроса с помощью пользовательского API, поэтому было бы предпочтительно сделать его асинхронным.
Самая очевидная вещь - это иметь поток опроса, который опрашивает данные, сохраняет в одноэлементном процессе всего процесса с семафорами, а затем потоки веб-сервера извлекают данные из указанного синглтона и показывают их.Я не большой поклонник синглетонов или сшитых друг с другом конструкций, поэтому я подумал о том, чтобы отделить источник данных poller от веб-сервера, вернуть его обратно на локальный интерфейс и использовать что-то вроде XML-RPC для потребления данных.
Приложение не обязательно должно быть «корпоративным» или масштабируемым на самом деле, так как оно будет доступно максимум нескольким пользователям одновременно, но я бы предпочел сделать его устойчивым, не смешивая два вида логики.В Python есть текущая реализация с использованием CherryPy, и это самая большая путаница ужасного дизайна, которую я когда-либо видел.Я чувствую, что, если я выберу самый очевидный дизайн, я просто переверну то же самое ужасное по-своему.