celery完成简单的定时任务

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
原文地址:https://www.cnblogs.com/wangxiaosai/p/14110823.html