1、vi tasks.py

#coding:utf-8fromserverimportappimportrandom,string,smtplib@app.taskdefadd(x,y):returnx+y@app.taskdefsend_mail():SUBJECT="临时登录密码"HOST="smtp.163.com"#TO=passwords['config']['email']TO='1235@qq.com'FROM="456@163.com"text=str(random.randint(1000,9999))BODY=string.join(("From:%s"%FROM,"To:%s"%TO,"Subject:%s"%SUBJECT,"",text),"\r\n")server=smtplib.SMTP(HOST)server.login("456@163.com","第三方发送验证码")server.sendmail(FROM,[TO],BODY)server.quit()

2、vi setting.py

#coding:utf-8fromdatetimeimporttimedeltafromkombuimportExchange,QueueBROKER_URL='redis://127.0.0.1:6379/13'CELERY_RESULT_BACKEND='redis://127.0.0.1:6379/14'CELERY_TIMEZONE='Asia/Shanghai'CELERY_ENABLE_UTC=TrueCELERY_TASK_SERIALIZER='json'#任务序列化和反序列化使用msgpack方案CELERY_RESULT_SERIALIZER='json'#读取任务结果一般性能要求不高,所以使用了可读性更好的JSON#CELERY_TASK_RESULT_EXPIRES=60*60*24#任务过期时间,不建议直接写86400,应该让这样的magic数字表述更明显CELERY_ACCEPT_CONTENT=['json']#指定接受的内容类型CELERY_QUEUES=(Queue('default',Exchange('default'),routing_key='default'),Queue('for_add',Exchange('for_task_add'),routing_key='for_task_add'),Queue('for_send_email',Exchange('for_task_email'),routing_key='for_task_email'),)CELERY_ROUTES={'celery_test.tasks.add':{'queue':'for_add','routing_key':'for_task_add'},'celery_test.tasks.send_mail':{'queue':'for_send_email','routing_key':'for_task_email'},}CELERYBEAT_SCHEDULE={'send_mail':{'task':'celery_test.tasks.send_mail','schedule':timedelta(seconds=30),},'add':{'task':'celery_test.tasks.add','schedule':timedelta(seconds=10),'args':(16,16)}}

3、vi server.py

fromceleryimportCeleryapp=Celery('celery_test',include=['celery_test.tasks'])app.config_from_object('celery_test.setting')if__name__=='__main__':app.start()

4、启动

celery -A celery_test.server worker -l info -Q for_send_email

celery -A celery_test.server worker -l info -Q for_add

celery -A celery_test.server beat

5、通过flower监控

pipinstallflower

celeryflower--port=5555--broker=redis://localhost:6379/0

6、访问

127.0.0.1:5555