django中celery服务器和django分离的一种使用方法
" http://docs.jinkan.org/docs/celery/" 官方中文版本
"客户端=>生产者" "worker=>消费者"
broker=> 被观察者 worker => 观察者
1.django 项目中建立一个包 命名为 celery_tasks(个人癖好而定)
2.celery_tasks 包中创建一个 task.py 文件
# 1.参数1指定任务所在的路径从包名开始
# 2.参数2指定任务队列broker,可以作为任务队列的有多种,此处以redis数据库为例
celery_client = Celery("celery_tasks.tasks", broker="redis://127.0.0.1:6379/4")
"生产者" "消费者"
# 1.参数1指定任务所在的路径从包名开始
# 2.参数2指定任务队列broker,可以作为任务队列的有多种,此处以redis数据库为例
# 3.生产任务 就是函数
"生产者" "消费者"
# django初始化不然找不到settings 复制一份项目到另外一台服务器,
##################这段代码只在celery服务器上存在####################"
import osos.environ["DJANGO_SETTINGS_MODULE"] = "django项目的根目录名称.settings"
# 放到Celery服务器上时添加的代码
import django
django.setup()
import time
# 创建celery对象/客户端
from celery import Celery
#####################################
@celery_client.task # ===> celery_client.task(send_active_email) 装饰就是methoddef send_active_email(to_email, user_name, token):
"""封装发送邮件方法"""
time.sleep(10)
subject = "test" # 标题
body = "" # 纯文本邮件体写这里
from django.conf import settings # 导入settings,方便粘贴方法不用考虑引用问题
sender = settings.EMAIL_FROM # 发件人
receiver = [to_email] # 接收人,可以多个
html_body = '<h1>尊敬的用户 %s, 感谢您注册XXXXXXXXX!</h1>' \
'<br/><p>请点击此链接**您的帐号<a href="http://127.0.0.1:8000/users/active/%s">' \
'http://127.0.0.1:8000/users/active/%s</a></p>' % ('XXXX', 'XXXXX', 'XXXXXX')
from django.core.mail import send_mail
send_mail(subject, body, sender, receiver, html_message=html_body) # html字符串写这里
# 3. 写好以后将项目拷贝一份到另外一台服务器然后把##中的django初始化的代码加上,执行第4步的命令即可测试
# 4最后 work on 到你的虚拟环境
celery -A celery_tasks.tasks worker -l info