Я опытный разработчик Python, начинающий работать над серверной системой веб-сервиса. Система передает данные (постоянно) из Интернета в базу данных MySQL. Эти данные позже отображаются на стороне фронтенда (между фронтендом и бэкендом связи нет). Бэкенд-система постоянно загружает информацию о рейсах из Интернета (некоторые данные извлекаются через API, а некоторые — путем загрузки и анализа текстовых/xls-файлов). У меня уже есть скрипт, который загружает данные, анализирует их и вставляет в базу данных MySQL — все в большом цикле. Внешний интерфейс — это просто набор php-страниц, которые правильно отображают данные, запрашивая сервер MySQL.
Крайне важно, чтобы этот веб-сервис был надежным, сильным и надежным. Поэтому я искал правильные способы ее разработки и нашел следующие части, из которых состоит моя система:
1) django как фреймворк (для HTTP-соединений и для использования Piston)
2) Piston в качестве поставщика API (это здорово, потому что тогда мой внешний интерфейс может использовать API вместо фактического выполнения запросов)
3) SQLAlchemy в качестве уровня БД (мне не нравится небольшой контроль, который вы получаете при использовании django ORM, я хочу иметь возможность запускать более сложную структуру БД)
4) Apache с mod_wsgi для запуска всего
5) И, наконец, Celery (или django-cron) для фактического запуска моего бесконечного цикла, который извлекает данные из Интернета - надеюсь, в каком-то формате организованных задач). Это та часть, в которой я меньше всего уверен, и любые указатели приветствуются.
Все это звучит великолепно. Раньше я использовал django для написания веб-сайтов (также известных как обработчики запросов, которые возвращают данные). Однако, кроме использования Celery или django-cron, я действительно не понимаю, как он подходит для роли постоянного сервера подачи данных.
Я просто хотел, чтобы вы, ребята, услышали ваши идеи/комментарии. Будем очень признательны за любой ваш вклад / указатели на документацию и / или другие библиотеки!
1 ответ
Если вы собираетесь использовать SQLAlchemy, я бы воздержался от использования Django: с Django все в порядке, если вы используете весь стек, но поскольку вы собираетесь содрать модели, я не вижу особой ценности в его использовании, и я бы взял посмотрите на другой вариант (возможно, подойдут Pylons или чистый старый CherryPy).
Тем более, если FE не будут выполнять запросы, а будут обращаться только к поставщикам API.
Что касается надежности, то меня больше устраивает запуск отдельных процессов fcgi с супервизором и использование более легковесного веб-сервера (ligty/nginx), но это дело вкуса.
Для части «бесконечный цикл» это зависит от того, какое поведение вы хотите: если есть проблема с источником, вы просто хотите пропустить шаг или повторить его несколько раз, когда источник резервируется?
Периодические задачи могут подойти бывшим , в то время как cron, который просто порождает задачи очистки, лучше подходит для последнего.
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.