Как запустить скрипт python на хостинге
Перейти к содержимому

Как запустить скрипт python на хостинге

  • автор:

Запуск Python скрипта на хостинге

Подскажите как запустить python скрипт на хостинге c установкой pip и дополняющих модулей для скрипта.

Также чтобы не было ошибок в import, так как сам скрипт находится в папке cgi-bin.

Работа с версией python 3.6

13.10.2020 07:45
Пользователь ID 129965
Для комментирования вопроса нужно зарегистрироваться или авторизоваться.
ОТВЕТЫ НА ВОПРОС (1)
Сотрудник Алексей Таран
13.10.2020 08:22
Для комментирования ответа нужно зарегистрироваться или авторизоваться.
Для ответа нужно зарегистрироваться или авторизоваться.

Перенос ответа

Пожалуйста, выберите ответ в который нужно перенести комментарий:

Как запустить Python скрипт на хостинге/виртуальном сервере?

Написал небольшой скрипт, который парсит обьявления на ОЛХ по параметрам. Если появляется новое обьявление скрипт отправляет мне его данные в телеграмм. В пайтоне не силен, работаю на другом ЯП, сделал уведомлялку чтоб снять жилье. Суть вопроса в том, что скрипт работает только локально и это не совсем удобно, ведь ноутбук у меня не включен 24/7. Есть бесплатный хостинг beget, возможно ли на нем или на другом хостинге запустить скрипт чтоб он работал постоянно? Без cron и прочих планировщиков задач, в скрипте стоит while: True . sleep(120). то есть скрипт каждые две минуты проверяет не появилось ли новое обьявление.

  • Вопрос задан более трёх лет назад
  • 11475 просмотров

Как запустить Python скрипты?

Python скрипты могут использоваться на серверах хостинга для работы с веб-приложением посредством запуска CGI-процессов. Для запуска скриптов Python в режиме CGI, Вам необходимо :

1. В .htaccess файл, который лежит [в корневой директории сайта] добавить строки, вида:

Options +ExecCGI AddHandler cgi-script .py

где .py — это расширение интерпретируемого файла.

2. При помощи [файлового менеджера] либо [ssh доступа] / [ftp доступа] установить права доступа CHMOD на запускаемый файл — 755

3. В самом скрипте (в самой первой строке) явно указать абсолютный путь к интерпретатору Python из инструкции.

Пример скрипта на python, который Вы можете использовать в качестве теста:

#!/opt/alt/python37/bin/python3 import cgitb import sys cgitb.enable() print ("Content-Type: text/plain;charset=utf-8") print () print ("Hello World!") print (sys.version)
Для корректной работы Python в режиме cgi, права доступа (CHMOD) на директорию, из которой запускается скрипт должны быть — 755 и на сам скрипт должны быть установлены — 755

Ошибка Internal Server Error

или suexec policy violation: see suexec log for more details в [логах ошибок] сайта может свидетельствовать о следующем:

• не установлены права 755 на родительский каталог или сам файл.

• в скрипте содержится невидимые BOM символы, которые можно убрать в [SSH] консоли через редактор VIM командой :set ff=unix

Все категории вопросов

  1. Общие вопросы по услуге хостинга
  2. Робота с хостинг 2.0
  3. Работа с базами данных [MySQL]
  4. Работа с файловым менеджером
  5. Работа с FTP
  6. Работа с SSH
  7. Работа с почтой
  8. Работа с Cron
  9. Работа с SSL
  10. Работа с резервным копированием
  11. Работа с htaccess
  12. Работа с CMS
  13. Дополнительные услуги
  14. Нагрузка
  15. Ошибки на сайте
  16. Конструктор сайтов
  1. Регистрация и продление доменов
  2. Управление DNS-записями домена
  3. Трансфер домена
  4. Смена контактных данных владельца домена
  5. Настройка CloudFlare
  1. Общие вопросы по серверам
  2. Администрирование виртуального сервера (VPS)
  3. Администрирование выделенного сервера (DS)
  4. Инструкции по Windows Server
  5. Инструкции по Linux
  6. Панель управления FASTPANEL
  7. Панель управления Hestia CP
  8. Панель управления Vesta CP
  1. Платный SSL-сертификат
  2. Файловое хранилище
  3. SMS-сервис
  4. CallBack-сервис

5 способов запустить Python скрипт не на локальной машине (для новичка)

Привет. Я не являюсь разработчиком и когда набросал простой скрипт для личных целей, задался вопросом: «Как запустить код не на своем компьютере?». Самые частые ответы в поисковике были про сервер и Docker. В результате забил гвоздь микроскопом. Почитать можно здесь.

Для специалистов с опытом статья наверное не имеет ценности, но новичкам надеюсь поможет сориентироваться и не потратить много часов на поиск информации и не совершать моих ошибок.

Варианты

Все ниже перечисленные способы подходят для несложного скрипта. Например, мой код для сборки статистики с группы VK, каждый час выполняет работу и завершается. Подробности тут.

Именно о запуске не сложных программ пойдет речь. Решения:

  • Yandex Functions и пр.
Облачные решения

Простой скрипт и простое решение. Все необходимое есть и не нужно возиться с сервером.

Yandex Functions

Достаточно зарегистрироваться. Перейти в консоль, потратить время на документацию, перенести свой код и настроить таймеры. В функционал уже встроены логирование и мониторинг.

Что по деньгам? Бесплатно можно выполнять 1 000 000 раз в месяц. Что думаю более чем достаточно для небольших задач.

Пример работы с Yandex Functions

Существуют аналогичные заморские решения Amazon Lambda, Google Cloud Functions, Azure Functions. С учетом действующих ограничений не вижу смысла дополнительно тратить время на преодоления всех препятствий, когда результат принципиально не будет отличаться. Если есть желание разобраться оставлю ссылки на пример работы:

VPS сервер

Аренда сервера мне кажется избыточным решением для запуска одного простого скрипта. Это оправдано в случае если есть желание разобраться как взаимодействовать с сервером или в будущем будите разрабатывать более сложные проекты.

Для настройки связи вашего сервера с локальной машиной, вам нужно будет настроить SSH. Если вы часто планируете вносить изменения в код для переноса файлов рекомендую настроить Github это решение удобное и практичное.

  • SSH с 1:05:23 до 1:08:25
  • Github с 1:10:17 до 1:14:32

В качестве альтернативы Github можно установить себе FileZilla Client. GUI позволяет удобно перетаскивать необходимые файлы и папки. Так же можно копировать файлы используя только командную строку.

Python

Простой способ применить бесконечный цикл с задержкой времени непосредственно в скрипте. Пример на имитации часов.

import time while True: localtime = time.localtime() result = time.strftime("%I:%M:%S %p", localtime) print(result) time.sleep(1)

Второй способ сделать то же самое используя библиотеку schedule. Эта библиотека дает возможность более гибко настроить время исполнения кода. Например, ваш скрипт должен запускаться каждую субботу в 6 часов.

import schedule import time def job(): localtime = time.localtime() result = time.strftime("%I:%M:%S %p", localtime) print(result) schedule.every().sunday.at("06:00").do(job) while True: schedule.run_pending()

У зацикливания есть ощутимый минус если программа упадет, то самостоятельно в следующей период она не запуститься.

Crontab

Немного сложнее, чем цикл в самом коде. Вам придётся поработать с командой строкой и в самом файле сrontab прописать, когда и какой файл запускать. Если у вас произойдет ошибка, не связанная с вашим кодом, например, упадет внешний API сервиса к которому вы обращаетесь, то в следующий период запуска, когда API будет восстановлен ваш скрипт отработает. Минусом является очень слабое логирование, поэтому понять в каком конкретно месте падает скрипт достаточно сложно.

Systemd

Более трудозатратный способ по сравнению с crontab. Вам придётся потратить время на создание 2-х файлов. Плюсы гибкая настройка времени, условий выполнения и широкое логирование. Вы сможете увидеть ошибку с который упал код.

Docker

Избыточное решение для запуска простого скрипта, тем не менее им тоже можно воспользоваться. В первую очередь вы потратите много времени на установку docker и его настройку. Если у вас простой код, то решение с docker скорее всего не принесет дополнительной ценности кроме опыта работы.

Вывод

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *