Найти - Пользователи
Полная версия: Как подключать внешние API для постоянной работы
Начало » Python для новичков » Как подключать внешние API для постоянной работы
1 2
exister
Добрый день!
Прошу помощи для новичка в Python.

Задача:
Подключить Google Sheets API по этой инструкции https://developers.google.com/sheets/api/quickstart/python
Его установка происходит следующим образом:
pip install –upgrade google-api-python-client

Через SSH консоль в виртуальном окружении все проходит гладко и скрипт quickstart.py выполняется.

Но как только я деактивирую окружение, скрипт перестает выполняться. Как я понял, он работает только в окружении, и если надо его выполнить, сначала запускается окружение (например, по расписанию), потом исполняется скрипт, окружение деактивируется.

Можно ли как-то упростить этот процесс, чтобы все работало так же просто как с CGI скриптами? Например, как-то установить Google Sheets API стационарно, а не в окружении?

Может вообще можно обойтись без окружения? Судя по его описанию, оно мне вообще не нужно, но саппорт хостинг провайдера сказал, что Google Sheets API нужно ставить только по такой инструкции:
1) Подключиться по SSH;
2) Создать виртуальное окружение;
3) Активировать виртуальное окружение;
4) Произвести необходимые действия;
5) Отключить виртуальное окружение;
JOHN_16
У вас нет прав что бы установить в систему питоновский проект - и для хостинга это вполне нормально.
А почему вы не хотите работать в окружении? оно для таких случаев и было придумано (наверняка). И проблем никаких с этим нету.
exister
JOHN_16
У вас нет прав что бы установить в систему питоновский проект - и для хостинга это вполне нормально.А почему вы не хотите работать в окружении? оно для таких случаев и было придумано (наверняка). И проблем никаких с этим нету.

Спасибо за ответ!

Я не против окружения, но как мне объяснили в техподдержке хостера, окружение запускается на время до суток, а потом деактивируется. И скрипты работают только при запущенном окружении.

Можно запускать его по расписанию, но я не понимаю как так работать? Вот у меня сервис, который должен работать в любое время. Я что должен делать такое расписание, что окружение постоянно перезапускается, и сервис недоступен только в момент перезапуска? Но так нормальные сервисы же не работают - это же нерациональная схема…
FishHook
exister
Окружение (если имеется в виду virtualenv) вовсе не обязательно активировать. Просто пишите полный путь до интерпертатора из окружения и работайте с ним.

 > /home/my_project/venv/bin/python /home/my_project/site/manage.py runserver
Rodegast
> Может вообще можно обойтись без окружения?

Конечно можно. Например я им вообще не пользуюсь. У меня всё устанавливается в обычную директорию которая переносится вместе с проектом. Директорию конечно же нужно добавить в sys.path
exister
Спасибо, парни, что нашли время вникнуть в мой вопрос!

FishHook
existerОкружение (если имеется в виду virtualenv) вовсе не обязательно активировать. Просто пишите полный путь до интерпертатора из окружения и работайте с ним.

Rodegast
> Может вообще можно обойтись без окружения?Конечно можно. Например я им вообще не пользуюсь. У меня всё устанавливается в обычную директорию которая переносится вместе с проектом. Директорию конечно же нужно добавить в sys.path

Звучит круто, но, наверное, на моем хостинге (sweb.ru) это не прокатит.

Вот выдержки из долгой переписки с саппортом:

Вопрос: Как мне установить библиотеки вне окружения, чтобы они работали постоянно и независимо от окружения?

Ответ:
1) Использовать виртуальное окружение для запуска данных скриптов;
2) Использовать услугу VDS. Покупается отдельно

Вопрос: Я могу активировать окружение и оставить его работать непрерывно, например, на 2 месяца?

Ответ:
Процесс работы с виртуальным окружением сводится к следующему:
1) Запуск виртуального окружения;
2) Выполнение скрипта;
3) Завершение работы виртуального окружения.

Т.е. при обращении к необходимому скрипту выполняется запуск виртуального окружения, а после выполнения скрипта виртуальное соединение закрывается. Это стандартный механизм работы в данной ситуации.

Вывод: сделать так, как мне нужно, чтобы скрипт мог все время исполняться на обычном хостинге (в моем случае) нельзя. Он только единожды выполнится. Если я хочу, чтобы он все время был доступен, нужно докупать VDS которая стоит как еще 1,5 абонентки за хостинг.
Rodegast
> Звучит круто, но, наверное, на моем хостинге (sweb.ru) это не прокатит.

1) Создаёшь на локалке папочку “paket”
2) Заходишь в эту папочку и командуешь:
 pip install google-api-python-client -t ./
3) Переписываешь папочку на сервер
4) В начало скрипта добавляешь:
 import sys
sys.path.insert(0, "путь к папке paket")
После этого всё должно заработать.
exister
Rodegast
> Звучит круто, но, наверное, на моем хостинге (sweb.ru) это не прокатит.1) Создаёшь на локалке папочку “paket”2) Заходишь в эту папочку и командуешь:

Воу! Выглядит немного не так как на локалке, но оно работает! Поверить не могу! http://z017.ru/test/5/quickstart.py

Rodegast, спасибо огромное за помощь, буду дальше разбираться! Не понимаю только почему за три дня переписки с саппортом мне никто не посоветовал такое же решение…
JOHN_16
exister
Не понимаю только почему за три дня переписки с саппортом мне никто не посоветовал такое же решение…
Потому что оно не считается хорошим. Поэтому его оч мало кто советует. В вашем конкретно случае это кончено сработает, потому как у вас там все достаточно примитивнентко. Но в более сложных проектах совсем все по другому. Но и подобный хостинг там маловероятно что используется.
exister
JOHN_16
Да, мне надо всего-то в таблицу гугловскую данные записать. Это, конечно, не про серьезный проект задача.
Спасибо за ответ!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB