запустить команду django manage.py в cron - PullRequest
0 голосов
/ 15 мая 2018

Я написал несколько команд управления для запуска из cron. Я использую pipenv виртуальную среду

работает с терминала напрямую работает отлично.

cd <project_path> pipenv run python manage.py <my_command>

Я добавил тот же скрипт, что и cron

cd /home/project_path && pipenv run python manage.py <my_command>

Но это дает ошибку как

/bin/bash: pipenv: command not found

Я также попробовал следующую команду

 cd /home/project_path && python manage.py <my_command>

который выдает ошибку как

File "manage.py", line 14
    ) from exc
         ^
SyntaxError: invalid syntax

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

что решило мою проблему, установив абсолютный путь к каждому модулю, например

cd <project_path> && /root/.local/bin/pipenv run /home/user/.local/share/virtualenvs/myproject-IuTkL8w_/bin/python manage.py <my_command> 
0 голосов
/ 15 мая 2018

Поместите файл run.py в корневую папку с файлом settings.py (ПРИМЕЧАНИЕ! Структура вашего проекта может отличаться):

#!/usr/bin/env python
import os
import sys
import settings

p = os.path.abspath(os.path.join(os.path.dirname(__file__)))
sys.path.insert(0, '%s' % p)
sys.path.insert(0, '%s/apps' % p)
from django.core.wsgi import get_wsgi_application
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from django.conf import settings
application = get_wsgi_application()

module_name = sys.argv[1]
exec('import %s' % module_name)
exec('%s.%s' % (module_name, ' '.join(sys.argv[2:])))

Затем перейдите в папку приложения и создайте файл cron.py с помощью test.() функция

def test():
   print ('Hello world')

и окончательный ввод следующей команды в консоль:

python run.py your_app_name.cron "test ()"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...