Проблемы с запуском команды управления Django в качестве постоянно включенной задачи на PythonAnywhere

Я создал и развернул свой Django-сайт на PythonAnywhere.

У меня есть сценарий в моем

app/management/commands/my_command.py

, который я намерен постоянно запускать. Я пытался использовать для этого функцию PythonAnywhere Always On Task, но статус никогда не меняется с «запущен» на «запущен».

В самом скрипте проблем нет, потому что когда я запускаю:

bash
(venv) $ source /home/myusername/.virtualenvs/myenv/bin/activate && cd /home/myusername/myproject && python manage.py my_command

Сценарий успешно выполняется, и когда я перехожу в консоль Always On Task, я вижу, что он успешно выполнен и записан в этой консоли.

Но проблема в том, что я не хочу всегда вручную запускать его в консоли Bash.

Я следовал инструкциям на странице помощи PythonAnywhere и изменил команду задачи на все опции, которые я могу использовать. Я попробовал:

bash
source virtualenvwrapper.sh && workon myenv && python /home/myusername/myproject/manage.py my_command

Но он никогда не меняется на «запущен».

Я также пробовал:

bash
/home/myusername/.virtualenvs/myenv/bin/python /home/myusername/myproject/manage.py my_command

Опять же, он никогда не меняется на «работает».

Однако, если я запускаю сценарий в консоли Bash, задача Always On выводит сообщение об успехе!

Что я делаю не так?

Если задача застряла в состоянии «Запуск», скорее всего, она завершается сразу после запуска. Самый простой способ выяснить причину - посмотреть журнал задач, доступ к которому можно получить с помощью первой кнопки в столбце «Действие».

Всегда в курсе дел

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

Я решил проблему, указав в команде DJANGO_SETTINGS_MODULE. Правильная команда для задачи «Всегда включен» выглядит следующим образом:

DJANGO_SETTINGS_MODULE=myproject.settings /home/myusername/.virtualenvs/myenv/bin/python /home/myusername/myproject/manage.py my_command

Это позволило успешно запустить задачу и работать непрерывно, как и предполагалось.

Вернуться на верх