Dockerized Flask App - Rest API с постоянно работающими скриптами - PullRequest
0 голосов
/ 12 марта 2019

Локально запущенное приложение Flask, которое состоит из нескольких конечных точек API REST.Все работает так, как ожидалось, поэтому, когда GET-запрос выполняется на одной из конечных точек, данные извлекаются из базы данных Postgres и затем отображаются в браузере как json.Отлично.Пока база данных - это просто тестовые данные, и теперь мне нужно постоянно обновлять базу данных реальными данными.

У меня есть сценарий, который извлекает данные из Интернета, и я понимаю, как добавить их в базу данных с помощью запросов на отправку и отправку запросов, но я не понимаю, как и где постоянно иметь этот сценарийработает там, где это не мешает части REST API моего сервера, и наоборот, как будто это совершенно отдельный объект внутри бэкэнда.

Чтобы сделать это, я бы создал совершенно новую флягуприложение, которое работает на своем собственном сервере и постоянно запускает сценарий и добавляет очищенные данные в базу данных, чтобы другое колб-приложение, которое содержит конечные точки API, могло обращаться к нему при необходимости?Я чувствую, как будто я далеко отсюда, и любой вклад в лучший способ двигаться вперед очень ценится.Спасибо!

1 Ответ

1 голос
/ 12 марта 2019

Вы совсем не далеки от меня.

Я бы сказал, пусть ваш API стоит сам по себе - в качестве шлюза для вашей базы данных.В своем собственном контейнере.

Соскреб, который вы хотите сделать, - это еще один процесс, и вы не должны смешивать его в приложении API фляги.Вместо этого, поскольку вы уже находитесь в области докеров, рассмотрите возможность создания другого образа, который сделает за вас скрепинг.Это может быть скрипт bash, приложение на python - это не важно.До тех пор, пока вы можете сохранить его как можно более простым.

Вы можете даже подумать, можете ли вы создать образ приложения / сценария таким образом, чтобы вы могли запускать несколько из них параллельно.

Да, у вас будет два изображения для обслуживания.Но каждый из них сам по себе будет меньше и менее сложным.И, если все сделано правильно - вы можете при необходимости увеличить масштаб деятельности.

Рассмотрим первые два утверждения философии UNIX :

  1. Makeкаждая программа делает одну вещь хорошо.Чтобы выполнить новую работу, создавайте заново, а не усложняйте старые программы, добавляя новые «функции».
  2. Ожидайте, что выходные данные каждой программы станут входными данными для другой, пока неизвестной программы.Не засоряйте вывод посторонней информацией.Избегайте строго столбчатых или двоичных форматов ввода.Не настаивайте на интерактивном вводе.

Ремонтопригодность - главное в игре разработки программного обеспечения.Большим перегруженным проектам трудно выжить в долгосрочной перспективе.

После размышлений: Если ваш проект экспериментальный, и вы просто хотите доказать какую-то концепцию - сделайте это.И не задумывайтесь над дизайном.От этого тоже умирает слишком много проектов!

Это, по крайней мере, мои мысли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...