我在为我的 Django 应用程序设置 crontab 一周时遇到了问题,我几乎想通了。(与Unable to make a function call using Django-cron相关的问题)
我的 crontab -e 语法是
* * * * * /Users/ashwin/dashboard/proj_application/exec.sh >> /Users/ashwin/dashboard/proj_application/data.log 2>&1
在我的 exec.sh 中,我有
#!/bin/bash
cd "$(dirname "$0")";
CWD="$(pwd)"
echo $CWD
python -c 'import proj_application.cron as cron; cron.test()'
在cron.py中,
from django.core.mail import send_mail
from smtplib import SMTP
from email.mime.text import MIMEText
import datetime
def test():
message = "<p>This is test mail scheduled to send every minute</p>"
my_email = MIMEText(message, "html")
my_email["From"] = "xxx@domain.com"
my_email["To"] = "yyy@domain.com"
my_email["Subject"] = "Title"
sender = "person1@domain.com"
receivers = ["person2@domain.com"]
with SMTP("localhost") as smtp:
smtp.login(sender, "yyy@1234")
smtp.sendmail(sender, receivers, my_email.as_string())
实际问题:
crontab 现在可以调用 exec.sh 文件,并且我可以在 echo 中打印 $CWD,当调用cron.py时,它无法识别 django.core.mail 并引发以下错误。
from django.core.mail import send_mail
ImportError: No module named django.core.mail
我想,我需要在某处设置虚拟环境或 python 变量路径,但由于我是 crontab 新手,我不知道该怎么做。
任何帮助表示赞赏。提前致谢。