Пользовательская команда на elasti c beanstalk предлагает неверный синтаксис в файле manage.py - PullRequest
0 голосов
/ 03 марта 2020

Я пытался выяснить, как лучше всего вызвать скрипт с помощью cronjobs, и не могу понять это. Либо я go с пользовательской командой, где я использую следующее в .ebextension / "some config file":

container_commands:
  01_some_cron_job:
    command: "cat .ebextensions/some_cron_job.txt > /etc/cron.d/mycron && chmod 644 /etc/cron.d/mycron"
    leader_only: true

some_cron_job.txt:

* * * * * root source /opt/python/run/venv/bin/activate && source /opt/python/current/env && /usr/bin/python /opt/python/current/app/manage.py cron_command >> /var/log/myjob.log 2>&1

Это работает, когда я выполнить команду локально, но после загрузки ее на eb я получаю следующую ошибку:

Файл "/opt/python/current/app/manage.py", строка 18) из exc ^ SyntaxError: неверный синтаксис

Или я мог бы вызвать скрипт напрямую:

* * * * * root source /opt/python/run/venv/bin/activate && source /opt/python/current/env && /usr/bin/python /opt/python/current/app/api/cron.py >> /var/log/myjob.log 2>&1

Но я получаю ошибки импорта при попытке импортировать функцию из другого файла в том же каталоге:

ImportError: попытка относительного импорта без известного родительского пакета

Я совершенно растерян и буду признателен за любую помощь.

1 Ответ

0 голосов
/ 03 марта 2020

Мне удалось найти работающее решение, в котором я вместо этого использовал:

files:
  "/etc/cron.d/mycron":
    mode: "000644"
    owner: root
    group: root
    content: |
      0/10 * * * * root source /opt/python/current/env && /opt/python/run/venv/bin/python3 /opt/python/current/app/manage.py cron_command >> /var/log/newjob.log 2>&1

commands:
    remove_old_cron:
        command: "rm -f /etc/cron.d/mycron.bak"

Я думаю, что проблема возникла из-за некоторых проблем с версией python в виртуальной среде.

...