Каков наилучший способ удаленного запуска скрипта Python один раз в день

#python #amazon-web-services #amazon-ec2

#python #amazon-web-services #amazon-ec2

Вопрос:

У меня есть небольшой 10-строчный скрипт python, который я хочу запускать один раз в день в определенное время.

Я хочу запустить его в 3 часа ночи, поэтому я подумываю о том, чтобы запустить его удаленно.

На данный момент я рассматриваю возможность запуска экземпляра EC2 на AWS, но это кажется немного утомительным для выполнения поставленной задачи.

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

Я использую macOS.

Комментарии:

1. Вы можете использовать AWS Lambda и вызвать его из Crontab на своем ноутбуке с помощью CLI: вы можете проверить эту команду: docs.aws.amazon.com/cli/latest/reference/lambda/invoke.html

2. @LeePriestEU пожалуйста, отметьте мое решение как правильное, если вы считаете, что оно решает вашу проблему.

3. Что делает скрипт? Как долго он выполняется?

Ответ №1:

Вы должны использовать AWS Lambda, который можно запустить с помощью Cloudwatch, который можно запланировать с помощью cron. Проверьте правила cloudwatch. Вы можете создать правило, а затем добавить триггер в lambda на основе этого. Документ AWS для того же.

Другой вариант:

Если вы все еще хотите использовать EC2, затем используйте микроэкземпляр для выполнения своей задачи, добавьте задание cron в свой EC2. Используйте планировщик экземпляров EC2 для запуска и остановки экземпляров в соответствии с вашими потребностями. Таким образом, вы будете использовать только EC2, когда они вам понадобятся. Смотрите Здесь дополнительные документы AWS для автоматизации эластичности по времени.

Комментарии:

1. Спасибо @Kuldeep В конце концов я выбрал подход EC2, поскольку у меня было немного больше опыта в этом. Однако я обязательно рассмотрю лямбду, поскольку это кажется более подходящим подходом.

Ответ №2:

Если выполнение скрипта занимает менее 15 минут, вы могли бы:

  • Создайте лямбда-функцию AWS с помощью вашего скрипта
  • Настройте событие Amazon CloudWatch для запуска функции Lambda по расписанию

См.: Создание правила событий CloudWatch, которое запускается по расписанию — События Amazon CloudWatch

Ответ №3:

Вы можете запустить его один раз, добавив time.sleep(86400) в цикле. Например:

 import time
while True:
    your_basic_code
    time.sleep(86400)
  

Это хорошее решение, если ваш код не требует много времени и вас не интересует точность времени (если вы согласны с 03:01 утра, например, на 10-й день и т. Д.). Существуют и другие решения, более точные, которые будут запускать код точно в 03:00

Комментарии:

1. Я хочу запускать скрипт удаленно, а не локально на моем компьютере!