Пошаговое руководство: от API к базе данных

Функции Azure — это бессерверная облачная служба, доступная по запросу, которая поддерживает основные среды выполнения программирования, такие как Python, Node.js, Java, Powershell Core и т. д. Она будет запускать ваше приложение без необходимости самостоятельно обслуживать компьютер/сервер.

В своих последних главах я представил эквивалентные бессерверные облачные сервисы для автоматического выполнения Python с помощью функций AWS Lambda и Google Cloud. И некоторые спрашивали меня, как сделать это с помощью служб Microsoft Azure и в чем разница. В этой статье я даю вам пошаговое руководство по простому развертыванию скриптов Python с помощью функции Azure.

Пошаговое руководство

Вариант использования: Время ожидания в аэропорту Штутгарта ✈️

Я живу в Штутгарте и мне приходится часто путешествовать. Иногда приходится ждать больше часа, а иногда вообще нет очереди. Хорошей новостью является то, что веб-сайт аэропорта Штутгарта показывает текущее время ожидания, которое обновляется каждые несколько минут. Однако на сайте не публикуются исторические данные. Здесь я буду использовать своего бота Python для хранения исторического времени ожидания и сохранения его в базе данных. С помощью этих средних данных я могу использовать их для прогнозирования закономерностей и тенденций, чтобы оценить мое ожидание перед моими будущими путешествиями.

Шаг 0: Понимание структуры

Мы хотим извлекать данные о времени ожидания службы безопасности в аэропорту и вставлять их в базу данных каждые 5 минут. Сценарий Python используется для извлечения этих данных с веб-сайта, а затем их обновления в базе данных PostgreSQL, как показано на рисунке ниже:

A — Веб-сайт: https://www.stuttgart-airport.com/security-wait-times/

B — Процесс Python: Функция Azure

C — База данных: PostgreSQL

Шаг 1: Подготовьте скрипт Python

Для извлечения данных с веб-сайта обычно используется модуль BeautifulSoup (bs4) для извлечения данных из содержимого HTML, как в следующем примере:

К счастью, данные, на которые мы ориентируемся, представлены на сайте в виде таблицы, поэтому мы можем использовать модуль Pandas для их непосредственного извлечения, как в этом примере. В конце концов, это наш последний скрипт для извлечения данных о времени ожидания:

Строка [2–3]: Загрузить модули

Строка [6–11]: извлечение данных HTML в фрейм данных Pandas.

Строка [14–19]: подключение к базе данных.

Шаг 2. Загрузите скрипт Python в функцию Azure.

Я обнаружил, что существует несколько способов создать лазурный проект и загрузить свой сценарий. В этой статье я порекомендую способ, который показался мне самым простым и эффективным. На самом деле вы не устанавливаете Azure CLI на свой компьютер. Я бы порекомендовал «VS Code» в качестве инструмента для редактирования и загрузки вашего скрипта Python для проекта Azure Function.

  • Зарегистрируйте учетную запись Azure
  • Установите VS Code (если у вас его еще нет)
  • Откройте VS Code и установите инструменты Azure или расширение функций Azure (достаточно только одного из них). Я бы порекомендовал инструменты Azure, поскольку они сочетаются со всеми другими функциями Azure и для других ваших проектов.

  • Нажмите на установленное меню Azure и войдите в свою учетную запись. Появится новое окно браузера, и вам будет предложено войти в систему с вашей учетной записью Microsoft. Теперь ваш код VS готов!
  • В VS Code «откройте папку», в которой вы хотите инициировать проект функции Python.
  • Выберите меню Azure, в разделе «Функции» нажмите эту кнопку, чтобы создать новый проект.

  • Вам будет предложено ввести папку, чтобы начать проект, выберите текущую. Выберите «Python» в качестве интерпретатора. Вы можете пока пропустить виртуальную среду.
  • Выберите «Триггер таймера» в качестве начального шаблона. Вы можете ввести CRON по умолчанию, который можно отредактировать позже.
  • После этого в папке нашего проекта будет создан набор файлов. Отредактируйте «__init__.py», добавив свой скрипт Python из шага 1.

  • Добавьте зависимости модуля в «requirements.txt». *Azure не поддерживает psycopg2. Вместо этого вам потребуется psycopg2-binary, если это требуется для вашего проекта.

  • Вы можете отредактировать расписание для запуска вашего скрипта Python, используя CRON в «function.json».

  • Обратите внимание, что вам необходимо использовать CRON в формате из шести частей, который содержит «Second» в качестве привязки расписания выше.

* * * * * *
- - - - - -
| | | | | |
| | | | | +--- day of week (0 - 6) (Sunday=0)
| | | | +----- month (1 - 12)
| | | +------- day of month (1 - 31)
| | +--------- hour (0 - 23)
| +----------- min (0 - 59)
+------------- sec (0 - 59)
  • Теперь все готово. Снова перейдите в меню Azure, нажмите кнопку развертывания и выберите проект, который мы создали ранее. Это действие загрузит и заменит все файлы, которые мы только что отредактировали, в наш проект функции Azure.

Шаг 3: Тестирование

  • После загрузки проекта вы можете проверить поток журналов, нажав «Подключиться к потоку журналов…». Страница журнала появится на новой вкладке вашего браузера.

Вот и все! Наш бот Python теперь полностью работает в облаке и автоматически очищает и сохраняет в базе данных время ожидания службы безопасности аэропорта Штутгарта.

Бонус: это короткий скрипт, который я использовал для построения графика выше

Как насчет стоимости функций Azure?

Согласно Microsoft Azure, он предоставляет бесплатный грант в размере 1 миллиона запросов и 400 000 ГБ-с потребления ресурсов в месяц на подписку с оплатой по мере использования для всех функциональных приложений в этой подписке.

Сколько именно стоит этот бесплатный лимит «400 000 ГБ-с»?

Чтобы лучше понять это, давайте сделаем оценочный расчет из нашего варианта использования. Просто перейдите в раздел журнала, чтобы увидеть пиковое значение единиц потребления, используемых во время выполнения функции.

В нашем случае максимальное потребление занимает 550000 Единиц выполнения функций в МБ миллисекунд. Чтобы преобразовать в ГБ-секунды, разделите на 1024000.

550 000 МБ-миллисекунд / 1 024 000 = 0,537109375 ГБ-секунд/выполнение.

Триггер выполнения каждые 5 минут, что означает, что требуется

60/5 x 24 x 30 = 8640 выполнений в месяц.

0,5371 ГБ-с/выполнение x 8640 выполнений/месяц = ​​4640 ГБ-с/месяц

Это означает, что наша функция занимает всего 4640/400000 ~ 1,16% от допустимого уровня бесплатного пользования. Таким образом, вы можете делать многое с этим ограничением бесплатного уровня. В любом случае, лучше заранее проверить потребление, чтобы спланировать свой бюджет. После 400000 исполнений в месяц стоит $0.000016/ГБ-с.

Сложность развертывания

Я обнаружил, что развертывание бессерверных функций в Azure в начале более сложное для изучения, поскольку нам нужно поддерживать несколько файлов в проекте с использованием заданного шаблона и использовать расширение Azure в VS Code или Azure CLI для развертывания. Пока мы можем просто загрузить скрипт Python и require.txt в Google Cloud Function/AWS Lambda через браузер. Но затем в Azure становится намного проще развернуть или отредактировать скрипт после того, как он будет настроен и синхронизирован с учетной записью Azure.

Альтернатива?

Да, есть несколько вариантов, о которых я подробно писал ранее.



  • Используйте AWS Lambda для запуска вашего бота на Python.






Надеюсь, вам понравятся мои статьи, и вы найдете их полезными для своей повседневной работы или проектов. Пожалуйста, не стесняйтесь обращаться ко мне, если у вас есть какие-либо вопросы.

Будьте в безопасности и здоровы!
Спасибо за чтение. 👋😄

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Присоединяйтесь к нашему сообществу Discord.