Назад | Перейти на главную страницу

Как запустить скрипт Python на сервере 24/7?

У меня есть скрипт на Python, который нужно запускать на AWS 24/7. Как я могу это сделать? Должен ли я просто запустить его, как если бы я делал локально:

python3 main.py

Или я должен быть:

python3 main.py &

?

Есть ли разница, куда я положил: в домашнем каталоге? Или в подкаталоге? Это вообще имеет значение?

В какой операционной системе вы это используете? Вам следует серьезно подумать об использовании собственной системы инициализации. Если вам повезет, вы будете использовать что-то с systemd, и тогда служебный файл будет очень просто написать.

[Unit]
Description=My awesome program

[Service]
ExecStart=/usr/local/bin/awesome.py

[Install]
WantedBy=multi-user.target

Есть еще варианты:

  • вы можете сделать то, что предложили, используя python3 main.py & а затем закрыть канал ssh (используя без & выполнит выход из сценария при закрытии ssh-соединения)

  • вы можете установить задание cron для скрипта

  • однажды я сделал простой сценарий bash, который будет прослушивать новую информацию на удаленном сервере git и запускать обновленный сценарий каждый раз, когда было внесено новое изменение

    • это может быть хорошей идеей, если вы планируете обновить сценарий и внести другие изменения в развертывание;
    • Сначала я создам сценарий, который запускается как служба во время загрузки, проверяя, все ли в порядке и обновлен, а затем он будет периодически запускать мой нужный сценарий, проверяя наличие обновлений;
    • не обязательно использовать git, другой пример может использовать rsync;

РЕДАКТИРОВАТЬ:

Мониторинг скрипта:

  • мониторинг ресурсов, которые виртуальная машина использует из AWS;
  • отправка электронного письма с выводом процесса, запущенного в настоящее время в системе, или какой-либо журнал;
  • создание мини-веб-интерфейса, показывающего, какие службы работают;
  • с помощью инструмента мониторинга, такого как Sensu, Nagios, Datadog и т. д.

Ты можешь использовать screen (человек)

Чтобы запустить вашу программу:

  • Авторизуйтесь по ssh,
  • Экран запуска: $ screen
  • Запустите вашу программу:$ python3 main.py
  • Отключитесь от экрана с помощью комбинации клавиш C-A (Ctrl + A) + D (то, что находится в вашем сеансе экрана, будет продолжать работать)
  • Выйти из ssh

Чтобы еще раз проверить выполнение вашей программы:

  • Войдите в систему с помощью ssh (с тем же пользователем, что и раньше)
  • Повторно подключитесь к существующему сеансу экрана, используя $ screen -r