celery完成簡單的定時任務
阿新 • • 發佈:2020-12-09
1.在Django中使用celery的定時任務需要安裝django-celery-beat
pip3 install django-celery-beat
2、在Django的settings中註冊django_celery_beat
INSTALLED_APPS = (
...,
'django_celery_beat',
)
3、執行建立表命令
如果遷移不成功 報cerely_task的錯誤 那就把關於celery的導包全部放在方法裡面
python3 manage.py makemigrations
python3 manage.py migrate
4、在與專案同名的目錄下的celery.py中新增定時任務
app.conf.beat_schedule = {
'add-every-5-seconds': {
'task': 'celery_task.tasks.send_overtime', #要執行的專案 或者也可以說執行的任務
'schedule': 10.0, #每十秒一執行
'args': (16, 16)
},
}
5.講方法寫入目錄下的task方法中
@app.task def send_overtime(start,end): send_mail(subject='工單超時', message='jinwu提交的工單即將超時,請儘快審批', from_email=settings.EMAIL_FROM, # 傳送者郵箱 recipient_list=['[email protected]',], # 接收者郵箱可以寫多個 fail_silently=False) return random.randint(start,end)
6.setting裡面的配置
# 配置郵件傳送 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.163.com' # 如果為163郵箱,設定為smtp.163.com EMAIL_PORT = 25 # 或者 465/587是設定了 SSL 加密方式 # 傳送郵件的郵箱 EMAIL_HOST_USER = '[email protected]' # 在郵箱中設定的客戶端授權密碼 EMAIL_HOST_PASSWORD = 'XNFDYDCJXIUDGOEX' # 第三方登陸使用的授權密碼 EMAIL_USE_TLS = True # 這裡必須是 True,否則傳送不成功 # 收件人看到的發件人, 必須是一直且有效的 EMAIL_FROM = 'hr<[email protected]>' DEFAULT_FROM_EMAIL = EMAIL_HOST_USER