Проблема с запуском команды django в crontab - PullRequest
0 голосов
/ 19 февраля 2020

Я использую docker контейнер , и я хочу сделать periodi c сканирование и обновление Django моделей.

Поэтому я решил сделать команду django и запускайте его периодически Linux crontab.

Cronjob list

* * * * * . /root/.profile; /usr/local/bin/python3 /code/manage.py crawl_snu >> /var/log/cron.log 2>&1
# crawl_snu is a command name

Но возникает ошибка

Traceback (most recent call last):
  File "/code/manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 371, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 365, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 204, in fetch_command
    settings.INSTALLED_APPS
  File "/usr/local/lib/python3.7/site-packages/django/conf/__init__.py", line 56, in __getattr__
    self._setup(name)
  File "/usr/local/lib/python3.7/site-packages/django/conf/__init__.py", line 43, in _setup
    self._wrapped = Settings(settings_module)
  File "/usr/local/lib/python3.7/site-packages/django/conf/__init__.py", line 125, in __init__
    raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")

SECRET_KEY находится в переменной окружения, поэтому я использую его как показано ниже

# settings.py
# ...
SECRET_KEY = os.environ.get('SECRET_KEY')
# ...

Я пытался передать переменную среды, добавив . /root/.profile/ перед выполнением команды, но она не работает.

Существует много переменных среды, кроме SECRET_KEY , и они передаются хостом через docker run --env .env imagename.

Это может быть проблема, связанная с Docker crontab ... Как я могу поделиться переменными окружения с crontab, или есть какие-то лучшие решения для периодического выполнения django команда с docker?

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