У меня была проблема при реализации django-crontab в virtualenv. Я создал файл cron.py в своем приложении Django для отправки электронной почты каждую минуту, и когда я запустил его, я увидел запущенные процессы, но скрипт не был выполнен.
Я использую macOS Catalina и python3.7.4. Я запустил мое приложение Django в virtualenv. В прошлом я пытался: в
'django_crontab',
...)
CRONJOBS = [
('*/5 * * * *', 'mypapp.cron.send_email', '>> /tmp/file.log')
]
CRONTAB_COMMAND_SUFFIX = '2>&1'
это мой файл cron.py (я тестировал скрипт без crontab, и он работал).
import smtplib, ssl
def send_email():
port = 465
smtp_server = "smtp.gmail.com"
sender_email = "sender@gmail.com"
receiver_email = "receiver@gmail.com"
password = ""
message = """\
Subject: Hi there
This message is sent from Python."""
context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
# server.login(sender_email, password)
# server.sendmail(sender_email, receiver_email, message)
Затем язапустите python manage.py crontab add
и python manage.py runserver
.
Я увидел, что contab работал, когда я набрал crontab -l
, и эта строка появилась на терминале: */1 * * * * /Users/james/Documents/pj_django/myenv/bin/python /Users/james/Documents/pj_django/myenv/manage.py crontab run 6da410d117f9ce8casc7c6cd8c8dc78 >> /tmp/file.log 2>&1 # django-cronjobs for firstproject
Но сценарий не былБег. После этого я проверил свой файл file.log, чтобы увидеть сообщение об ошибке, и увидел, что эта строка появляется каждую минуту.
ImportError: No module named 'encodings'
Current thread 0x00007fffasda35 (most recent call first):```
When I read the django-crontab doc I saw it only support from Python3.5 or lower, so I tried to change my python version from 3.7 to 3.5 with this command virtualenv -p /path/to/python3.5
However, I still receive the same errors.
How do I fix this problems?