NetrunНа главную

Как запустить Python-скрипт круглосуточно без своего компьютера

· 5 мин чтения

Скрипт написан и работает: собирает цены с сайта, шлёт отчёт в чат, чистит таблицу раз в час. Но живёт он ровно столько, сколько открыт терминал. Закрыли ноутбук, ушёл в сон, отвалился Wi-Fi — и сбор данных прервался, а вы узнаете об этом через неделю по дырке в таблице. Обычный ответ на это — арендовать сервер, поставить туда Python, настроить автозапуск, чтобы процесс поднимался после перезагрузки, и не забывать про обновления системы.

Есть вариант короче: отдать скрипт площадке, которая держит его запущенным сама. Netrun принимает код, сам понимает, что это Python, ставит зависимости, запускает скрипт и поднимает его обратно, если он упал. Разберём по шагам и честно про то, где у бесплатного тарифа граница.

  1. Сделайте скрипт бесконечным, а не разовым

    Скрипт, который отработал и завершился, площадка считает завершённым — она не будет запускать его каждый час сама. Если задача повторяющаяся, планировщик должен жить внутри самого скрипта: бесконечный цикл с паузой между заходами или библиотека расписаний вроде schedule или APScheduler. Тогда процесс не завершается, а сам просыпается в нужное время.

  2. Соберите зависимости в requirements.txt

    Положите рядом со скриптом файл requirements.txt со списком библиотек. По нему мы поймём, что перед нами Python, и установим всё нужное при сборке. Папку с установленными пакетами класть в архив не надо — она только раздует загрузку.

  3. Вынесите ключи и пароли из кода

    Токены, ключи API и пароли от баз читайте из переменных окружения, а не из строк в коде. При настройке проекта Netrun спросит эти значения и подставит их в окружение в зашифрованном виде — в архиве и в репозитории они лежать не будут.

  4. Загрузите код и заберите работающий процесс

    Загрузите папку ZIP-архивом или импортируйте репозиторий из GitHub, в том числе приватный. Netrun поставит зависимости, запустит скрипт и покажет его вывод в кабинете в реальном времени. Всё, что вы печатаете через print или пишете в лог, видно там же — по логу удобно проверять, что заходы происходят по расписанию.

  5. Учтите ограничение бесплатного тарифа

    Скрипт без публичной ссылки на бесплатном тарифе работает три дня, а потом выключается — предупреждение придёт за сутки. Код, настройки и ключи при этом остаются на месте, ничего не удаляется. Трёх дней достаточно, чтобы убедиться, что скрипт собрался и ходит по расписанию. Чтобы он работал постоянно, нужен тариф Pro. Причина простая: сайт умеет засыпать в простое и просыпаться по открытой ссылке, поэтому место на сервере занимает только пока отвечает. Фоновый скрипт занят всё время и разбудить его нечем — его непрерывная работа и есть то, за что вы платите на Pro.

Чтобы скрипт работал круглосуточно, не нужен ни включённый ноутбук, ни арендованный сервер с автозапуском. Загрузите код, вынесите ключи в секреты и оставьте планировщик внутри скрипта — остальное берёт на себя платформа. Попробовать Netrun.

Частые вопросы

Как запускать скрипт по расписанию, раз в час?

Расписание должно жить внутри скрипта: бесконечный цикл с паузой либо библиотека вроде schedule или APScheduler. Скрипт при этом не завершается, а сам просыпается в нужный момент. Отдельный планировщик, как cron на сервере, настраивать не нужно.

Что будет, если скрипт упадёт с ошибкой?

Netrun перезапустит его сам. Причину видно в логах в кабинете: там же весь вывод скрипта в реальном времени, поэтому ошибку можно найти и поправить код.

Можно ли держать скрипт на бесплатном тарифе постоянно?

Нет. Скрипт без публичной ссылки на бесплатном тарифе работает три дня, а затем выключается — код и настройки при этом сохраняются. Для постоянной работы нужен тариф Pro. Бесплатно и без ограничения по времени на Netrun живут сайты: они засыпают в простое и просыпаются, когда кто-то открывает ссылку.

Куда сохранять собранные данные?

Проще всего писать во внешнюю базу или таблицу — тогда данные не зависят от жизни проекта. Если база нужна рядом, её можно поднять в том же проекте: до пяти связанных сервисов, данные хранятся в постоянном томе и переживают обновление кода.

Нужно ли настраивать systemd и автозапуск?

Нет. Поддержанием процесса и его перезапуском занимается платформа. Ставить Python на сервер, писать юниты systemd и следить за обновлениями системы не требуется.

Можно ли запустить проект на Python — Django, Flask или FastAPI?

Да. Положите зависимости в requirements.txt — Netrun определит Python и соберёт проект сам. Django, Flask и FastAPI поддерживаются; приложение должно слушать порт из переменной окружения, а ключи и доступ к базе задаются как секреты, а не в коде.

Что будет, если приложение упадёт?

Мы следим за проектами и перезапускаем их при сбое. Если что-то идёт не так, вы видите статус и логи в кабинете и получаете уведомление.

Где посмотреть логи и статус проекта?

На странице проекта есть статус, логи и история событий — по ним видно, что происходит с проектом прямо сейчас.