django+celery + rabbitmq + redis +flower+supervisor可视化分布式异步多任务

理论加实战

实战

centos7下python3.6

pip3 install supervisor,Celery

supervisor是后台执行

为了shell终端输入celery就可以用必须执行下面命令,要先找到celery安装在哪里 pip安装的一定在python安装目录的bin下面

装好后 ln-s /usr/local/python3/bin/celery /usr/bin/celery

flower是异步任务可视化, rabbitmq的配置网上也有很多

我列一下最关键的几步

1.rabbitmq命令

2.supervisor配置文件 flower的重启需要你杀掉进程再起

3.clelery全局配置

效果

4个异步任务

django中配置

 

rom celery import Celery
from django.conf import settings
from django.core.mail import send_mail
import logging,os,django
#创建对象
app=Celery('celery_task',broker='redis://:redis密码@redis地址:端口号/哪个库')
举例
有密码版
redis://:[email protected]:9000/8
无密码版
redis://192.168.4.33:9000/8



logger=logging.getLogger('django')
#初始化django配置文件
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dailyfresh.settings")
django.setup()


#定义发邮件任务函数
#定义任务函数需要传进来三个参数
@app.task固定写法
def send_emils(to_emil,username,token):
    """发送激活邮件"""
    # logger.error([to_emil,username,token])
    subject = '邮件主题'
    sender = settings.EMAIL_FROM
    receiver = [to_emil]
    message = ''
    html_message = '<h1>%s欢迎您</h1>请点击以下链接激活<br/><a href="http://127.0.0.1:8000/user/active/%s">http://127.0.0.1:8000/user/active/%s</a>' % (
    username, token, token)
    send_mail(subject, message, sender, receiver, html_message=html_message)

              

#外部调用

from celery_tasks.tasks import send_emils
# 可以用celery异步发送邮件,原本发送邮件是阻塞的
send_emils.delay(email,username,token)

上面搞好后执行

      0.mkdir /etc/supervisord/

  1. echo_supervisord_conf > /etc/supervisord.conf
  2. vim /etc/supervisord/supervisord.conf
  3. 大写GG按两下在按下字母o 将以下粘贴进去

 

[program:celeryd]

:这个路径是你写了任务函数的上一层目录

directory=/etc/my_object/daydayshop/dailyfresh
command=celery -A celery_tasks.tasks worker  -l info
stdout_logfile=/var/log/celeryd.log
stderr_logfile=/var/log/celeryd.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs=600

然后esc x保存退出

执行supervisord -c /etc/supervisord/supervisord.conf

然后tail -5  /var/log/celeryd.log

[2019-04-18 08:44:14,891: INFO/MainProcess] Connected to redis 你配置的redis
[2019-04-18 08:44:14,958: INFO/MainProcess] mingle: searching for neighbors
[2019-04-18 08:44:16,027: INFO/MainProcess] mingle: all alone
[2019-04-18 08:44:16,110: INFO/MainProcess] celery@你的主机名 ready.

supervisorctl -c /etc/supervisord/supervisord.conf start celeryd

启动

理论部分

定时任务

  如果我们想某日某时执行某个任务,或者每隔一段时间执行某个任务,也可以使用celery来完成.   使用定时任务,需要安装额外包:

pip install django_celery_beat

  首先在settings.py中安装此应用:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.m
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值