Django アプリケーションの crontab の設定で 1 週間問題が発生しましたが、ほぼ同じことがわかりました。( 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 ファイルを呼び出すことができるようになり、呼び出しがcron.pyに来ると、エコーで $CWD を出力できます。django.core.mail を認識できず、次のエラーがスローされます。
from django.core.mail import send_mail
ImportError: No module named django.core.mail
どこかに仮想環境やpython変数パスを設定する必要があると思いますが、crontabを初めて使用するので、その方法がわかりません。
任意の支援をいただければ幸いです。前もって感謝します。