#python #django #amazon-web-services #cron
#python #django #amazon-веб-сервисы #cron
Вопрос:
Я пытаюсь создать простой cron для отправки электронной почты. Я искал и пробовал разные ответы, но ни один из них, похоже, не работает.
Это мой файл django.config
Это один из ответов, которые я нашел в сети.
container_commands:
01_migrate:
command: "source /opt/python/run/venv/bin/activate amp;amp; python manage.py migrate --noinput"
leader_only: true
02_cronjb:
command: "cat .ebextensions/cronjobs.cron > /etc/cron.d/djangocrons amp;amp; chmod 644 /etc/cron.d/djangocrons"
leader_only: true
03_createsu:
command: "source /opt/python/run/venv/bin/activate amp;amp; python manage.py createsu"
leader_only: true
04_collectstatic:
command: "source /opt/python/run/venv/bin/activate amp;amp; python manage.py collectstatic --noinput"
option_settings:
aws:elasticbeanstalk:application:environment:
DJANGO_SETTINGS_MODULE: github.settings
PYTHONPATH: $PYTHONPATH
aws:elasticbeanstalk:container:python:
WSGIPath: github.wsgi:application
aws:elasticbeanstalk:container:python:staticfiles:
/static/: www/static/
packages:
yum:
postgresql95-devel: []
Это cronjobs.cron
* * * * * root source /opt/python/run/venv/bin/activate amp;amp; /opt/python/run/venv/bin/python /opt/python/current/github/manage.py cronjb >> /var/log/cronjobs.log
Это мой cronjb.py
from django.core.management.base import BaseCommand
from django.core.mail import send_mail
class Command(BaseCommand):
def handle(self, *args, **options):
subject = 'Hello'
message = 'World'
email_from = "abc@gmail.come"
recipient_list = ['abc@gmail.com']
send_mail(subject, message, email_from, recipient_list)
Все это развертывается без каких-либо ошибок, но я не получаю никаких электронных писем.
Что-то не так?
Комментарии:
1. Вы проверили /var/log/cronjobs.log ? Также используете ли вы amazon linux 1 или 2?
2. вот logs:filebin.net/4qq2txi5txdo5y44/log.txt?t=lxq3w8r7 и я использую linux 2.9.14
3. Когда вы подключаетесь к экземпляру по ssh и вручную запускаете cronjb.py , работает ли это? Другими словами, проблема ограничивается только автоматическим развертыванием, и если вы выполняете действия вручную в экземпляре, проблем нет?
4. когда я пытаюсь выполнить python cronjb.py он показывает ошибку, например, не удалось найти из django.core.management.base, но это то же самое для других пользовательских команд, но другие работают. И теперь я попробовал
04_cronjb: command: "* * * * * source /opt/python/run/venv/bin/activate amp;amp; cd /opt/python/current/app/ amp;amp; python manage.py cronjb > $HOME/cron-sqs.log 2>amp;1" leader_only: true
в файле django.config, и теперь, если я попытаюсь развернуть его, появится сообщение об ошибке `Команда не удалась в экземпляре. Код возврата: 127 Вывод: /bin/sh: 2.jpg : команда не найдена. «`. Я не знаю, почему он показывает 2.jpg5. 2.jpg это файл в корне моего проекта, где находится папка .ebextensions. Но я не знаю, почему это показывает.