1. 程式人生 > 實用技巧 >celery完成簡單的定時任務

celery完成簡單的定時任務

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