Не удается заставить Cronjob работать на Elastic beanstalk в проекте Django

Я пытался сделать это в течение нескольких дней. Просмотрел много статей и много постов на StackOverflow, но ничего не помогло.

Я развернул проект django на elastic beanstalk. У меня есть команда, которую я хочу выполнять каждый час.

У меня есть 3 .config файла в .ebextensions dir

django.config

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: project/wsgi.py

db-migrate.config

container_commands:
  01_migrate:
    command: "source /var/app/venv/*/bin/activate && python3 manage.py migrate"
    leader_only: true
  02_process_cron:
    command: "cat .ebextensions/crontab.txt > /etc/cron.d/crontab && chmod 644 /etc/cron.d/crontab"
    leader_only: true
option_settings:
  aws:elasticbeanstalk:application:environment:
    DJANGO_SETTINGS_MODULE: project.settings

crontab.txt

* * * * * source /opt/python/run/venv/bin/activate && cd /opt/python/current/app/ && source /opt/python/current/env && python3 manage.py my_process >> /var/log/myjob.log 2>&1

Для тестирования у меня есть cronjob для every minute

  • Я не нахожу ни одного myjob.log файла при загрузке полных логов с elastic beanstalk.
  • Мое приложение всегда находится в состоянии Degraded, и оно просто говорит Following services are not running: release.. У меня даже нет ничего с именем release

Почему AWS должен усложнять выполнение простых процессов. Я имею в виду, что на heroku запуск django cronjob - это просто добавление команды и все.

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

Простите, что спрашиваю, но вы уверены, что скрипты имеют правильные разрешения для запуска? sudo grep CRON /var/log/syslog Это легко упустить из виду.

sudo chmod a+x FILENAME

Чтобы сделать ваши скрипты исполняемыми, если проблема в этом =)

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