Планирование работы Cron в Google Cloud

Опубликовано: 2 Марта, 2022

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

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