1、在Django中使用celery的定时任务需要安装django-celery-beat
pip 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=['wangsai_python@163.com',], # 接收者邮箱可以写多个
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 = 'wangsai_python@163.com'
# 在邮箱中设置的客户端授权密码
EMAIL_HOST_PASSWORD = 'XNFDYDCJXIUDGOEX' # 第三方登陆使用的授权密码
EMAIL_USE_TLS = True # 这里必须是 True,否则发送不成功
# 收件人看到的发件人, 必须是一直且有效的
EMAIL_FROM = 'hr<wangsai_python@163.com>'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER