4660

Почему не запускается python скрипт в cron?

4 ответа

Приветствую. Вопрос знатокам!

Есть python скрипт, точнее команда django

создал cron.ssh с содержимым

#!/bin/sh
source ~/myenv/bin/activate && cd ~/public_html/site && python manage.py todo && deactivate

приходит письмо с /home/c/cXXXX/cron.sh: 2: /home/c/cXXXXX/cron.sh

Скрипт из консоли из virtualenv работает. Но в кроне не запускается.. Подскажите пожалуйста что я делаю не так?

Спасибо!

Ответы (4)

Иван Абрамов +2
08.08.2016 11:37
Что по данной проблеме говорят в поддержке?
Цитирую ответ техпеддержки:

Со стороны службы поддержки не производится анализ пользовательских скриптов. Cпособ решения обозначенной проблемы необходимо будет найти самостоятельно либо привлечь стороннего специалиста.

Мы рекомендуем еще раз внимательно проверить размещенные директивы.
Нашел решение, спасибо техподдержке за пинок и опыт. Нет, ну правда)

Ну во 1-х: Выяснилось, что cron вызывается исключительно через #!/bin/sh. Никаких #!/bin/bash и файлов с расширение *.bash он не видит и не понимает.. Покрайней мере в crontab можно выбирать только sh сценарий.

Во 2-х: Оказалось что в sh не работает стандартная утилита source ! Возможно у администратора с правами она и работает, но у нас, у смертных - Permission denied. Причем если запуститься из под bash, а по умолчанию он и стоит) Все работает! Это и обьясняет то, что скрипты прекрасно отрабатываются в консоле, но вываливаются через cron.

В итог:. Я решил вовсе отказаться от обращения к virtualenv через source / activate. А запускать скрипт напрямую, указав полный путь до python, и скрипта (а у нас в django это manage.py) и дальше все команды стандартно...

В итоге мой cron.sh теперь выглядит так:

#!/bin/sh
/home/c/xxxxxx/env/bin/python /home/c/xxxxxxx/gorod/public_html/site/manage.py todo

Все отлично отрабатывает. Вообще крон классная штука. Уж очень не хотелось курить маны и ставить Celery. Надеюсь мой опыт кому нибудь сократит время.
Свернуть ответы
Лавр Иванов +115
09.08.2016 06:36
Это здорово что удалось разобраться, спасибо что поделились решением!

Лично я Django в своих проектах не использую, ограничиваясь привычными всем CMS, но тешу себя надеждами что когда-то буду освою и направление работы с фреймворками вроде Django.

Вообще было бы здорово, если бы техническая поддержка влет могла указать на выявленный вами факт, но если готовым решением они не обладали, им бы наверняка потребовалось провести анализ вроде вашего, а думаю что это заняло бы не 5 и не 15 минут. Поэтому предложенный вариант по самостоятельному анализу понятен и здорово что удалось разобраться с проблемой. Так держать!

Похожие вопросы

Умар Омаров
146

Обновить файлы через Github

Добрый день, мои файлы которые находятся на хостинге различаются с локальными файлами, кроме самого сайта(фронтенд и бэкенд),  а именно различаются:  -виртуальное окружение, -конфигурация файлов settings.py -конфигурация файлов...
Дауд Алексеев
271

Работа с TimeWeb

Добрый день! Являюсь начинающим программистом и впервые пытаюсь запустить проект на timeweb. У меня есть Python скрипт и прилегающий к нему html файл(локально все работает). Как связать мой скрипт с хостингом?  
Хасан Смирнов
465

Python: байт-строки на сервере

Проблема такая: Пишу на python 3.6, с помощью Flask, на локальном компе все нормально, а на хостинге все шаблоны страниц получают байты вместо строк. Да можно конвертировать в строки, но не все получается конвертировать, так как часть ошибок выскакивает...
С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
С помощью соцсетей
У меня уже есть аккаунт Войти
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта