#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. Я хочу запускать скрипт удаленно, а не локально на моем компьютере!