Я работаю над поставщиком веб-интерфейса/API, который получает данные в реальном времени от стороннего веб-API, помещает их в базу данных MySQL и делает их доступными через HTTP/JSON API.
Я предоставляю API с помощью flask и работаю с БД с помощью SQLAlchemy Core.
Для части захвата данных в реальном времени у меня есть функции, которые оборачивают сторонний API, отправляя запрос, анализируя возвращенный xml в словарь Python и возвращая его. Мы будем называть эти оболочки API.
Затем я вызываю эти функции в других методах, которые берут соответствующие данные, при необходимости выполняют любую обработку (например, преобразование часовых поясов и т. д.) и помещают их в БД. Мы назовем эти процессоры.
Я читал об асинхронном вводе-выводе и событиях в частности, и я очень впечатлен.
Я собираюсь включить его в свой код захвата данных, но сначала у меня есть несколько вопросов:
Безопасно ли для меня все исправлять обезьяны? учитывая, что у меня есть flask, SQLAlchemy и куча других библиотек, есть ли какие-либо недостатки в исправлении обезьян (при условии отсутствия позднего связывания)?
С какой степенью детализации я должен разделить свои задачи? Я думал о создании пула, который периодически спавнит процессоры. Затем, как только процессор достигает части, где он вызывает оболочки API, оболочки API запускают GreenPile для получения фактических данных HTTP с помощью eventlet.green.urllib2.Хороший ли это подход?
К вашему сведению, у меня есть около 10 различных наборов данных в реальном времени, и процессор запускается каждые ~5-10 секунд.
Спасибо!