Планирование работы Cron в Google Cloud
Python часто называют связующим языком, потому что это мощный инструмент для простого комбинирования нескольких различных систем. Частично это связано с тем, что Python имеет отличную поддержку клиентских библиотек, которая позволяет вам взаимодействовать с множеством API, продуктов и сервисов, не выходя из Python. Но с облаком дело не заканчивается. Python полезен для сочетания чего угодно с чем угодно.
Cron Job - это команда Linux, используемая для планирования задач, запускаемых на сервере. Чаще всего они используются в автоматизации. В этой статье мы рассмотрим этапы планирования работы cron в Python в облачном хранилище Google.
В качестве примера мы напишем сценарий python, который будет получать главные новости из Hacker News API , а затем перебирать каждую историю. Если какое-либо из их названий соответствует бессерверному, он отправит вам электронное письмо со ссылками. Мы будем использовать библиотеку запросов, чтобы сделать HTTP-запрос к URL-адресу API, который размещен в Firebase, продукте Google Cloud.
The first step would be writing a Python script,
Python3
from request import get top_stories_url = api_arl + "topstories.json" item_url = api_url + "item/{}.json" |
Then if any of the stories match, we’ll use some custom code to send an email formatted with all of the “serverless” stories. We can put this all in a single Python function as shown below:
Python3
# sudo code from utils import send_email def check_serverless_stories(request): top_stories = request.get(top_stories_url).json serverless_stories = [] ... send_email(serverless_stories) if serverless_stories: send_email(serverless_stories) |
Затем мы можем развернуть это приложение в облачных функциях, используя следующие команды:
Функции $ gcloud развернуть check_serverless_stories - время выполнения python38 --trigger-http
После развертывания мы получаем общедоступный URL-адрес нашей функции. Поэтому всякий раз, когда мы посещаем этот URL, он будет отправлять нам по электронной почте любые новые статьи на главной странице Hackernews.com.
И последний шаг - запуск по расписанию. Для этого мы используем Cloud Scheduler для создания нового задания, которое запускается один раз в день.
Задания Cron планируются с повторяющимися интервалами, указанными с помощью формата cron Unix. Вы можете определить расписание, чтобы ваше задание выполнялось несколько раз в день или в определенные дни и месяцы.
Мы запланируем выполнение нашей работы один раз в день в полночь. Мы будем использовать команду gcloud scheduler jobs create для создания задания, которое вызывает нашу функцию по расписанию, как показано ниже:
Задания планировщика $ gcloud создают http email_job --schedule = "0 0 * * *" --uri = https://YOUR-REGION-project.cloudfunctions.net/check_serverless_stories
Мы можем использовать список заданий планировщика gcloud, чтобы подтвердить, что наше задание было создано, с помощью следующей команды:
Список заданий планировщика $ gcloud
И мы можем использовать запуск заданий планировщика gcloud для однократного запуска независимо от расписания, как показано ниже:
Задания планировщика $ gcloud запускают email_job
Благодаря этому вы получаете любые бессерверные статьи, доставляемые прямо в ваш почтовый ящик каждый день, без каких-либо дополнительных действий.