步骤:
1. 创建项目
django-admin startproject project
2. 创建app
python manage.py startapp sendemail
3. 配置settings.py
DEBUG = False ALLOWED_HOSTS = ['127.0.0.1'] # celery djcelery.setup_loader() BROKER_URL = 'redis://127.0.0.1:6379/1' CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' CELERY_ACCEPT_CONTENT = ['json'] CELERY_RESULT_BACKEND = 'redis://localhost:6379/2' CELERY_TASK_SERIALIZER = 'json' CELERY_ENABLE_UTC = True TIME_ZONE = 'Asia/Shanghai' CELERY_TIMEZONE = TIME_ZONE # email EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = "" EMAIL_HOST_PASSWORD = '' DEFAULT_FROM_EMAIL = EMAIL_HOST_USER = "" EMAIL_PORT = 25 EMAIL_USE_TLS = True
4. tasks.py代码
#coding=utf-8 from __future__ import absolute_import, unicode_literals from celery import shared_task from django.core.mail import send_mail import logging logger = logging.getLogger(__name__) @shared_task def celery_send_email(subject, message, from_email, recipient_list, **kwrags): try: logger.info("\n开始发送邮件") send_mail(subject, message, from_email, recipient_list, **kwrags) logger.info("邮件发送成功") return 'success!' except Exception as e: logger.error("邮件发送失败: {}".format(e))
5.初始化数据库
python manage.py makemigrations
python manage.py migrate
6. 配置我们的celery-beat
django提供了一个可视化的后台,
启动服务
python manage.py runserver
。
浏览器访问 :120.0.0.1:8000/admin
这时候我们发现我们还没有管理员帐号?
命令窗口通过python manage.py createsuperuser 创建管理员帐号
7. 后台 periodic task 中增加定时任务
这里配置定时任务可以做到最小单位 microsecond 微妙
Interval 间隔
Crontab 最小单位是Minute分钟
分 时 日 月 星期
8. 启动心跳
python manage.py celery beat
9. 启动 worker
python manage.py celery worker -l info
10. 启动 celery flower ,对任务进行监控
pip install celery-flower
python manage.py
celery flower
127.0.0.1:5555
每次运行异步task后, Celery都会返回AsyncResult对象作为结果. 你可以将其保存, 然后在将来查看该task是否运行成功和返回结果: