linux创建celery任务项目流程

本文详细介绍了在CentOS6.5系统中,如何配置和安装Celery任务项目的环境,包括rabbitmq、redis和Celery的安装步骤,并提供了项目目录结构、启动方式以及后台启动配置的方法。
摘要由CSDN通过智能技术生成

目录:

一. 系统及软件版本

二. 软件安装

三. celery部件组成

四. 实例项目

  4.1 项目代码内容讲解

  4.2 前台方式启动项目

  4.3 后台方式启动项目

五. 实例代码

 

一. 系统及软件版本

linux => centos6.5

python=>3.6.5

celery=>4.3.0

redis=>2.8.10

任务中使用的redis=>2.10.6(即pip3 install redis==2.10.6)【注解:pip3安装的redis版本和redis软件的版本不对应,我尝试过安装redis为2.10.6版本的软件,发现redis没有这个版本;这点不用纠结,上面提到的redis是指redis软件,而pip3安装的redis是python调用redis使用的包,是两个不一样的东西,版本不对应是正常的】

rabbitmq=>3.6.10

二. 软件安装

我的习惯是软件都下载在/usr/local/src 目录下,大家各自按照自己的习惯来

1. 安装rabbitmq

rabbitmq的安装可以访问 https://blog.csdn.net/qq_40238199/article/details/82258066 这个博文,该博文作者描写的很详细很清楚,以下命令都摘录自该博文

1.1 先安装erlang 

1). 下载安装包   wget  http://erlang.org/download/otp_src_20.0.tar.gz

2). 解压安装包   tar -zxvf otp_src_20.0.tar.gz

3). 安装erlang需要的依赖包  

a.  yum install ncurses ncurses-base ncurses-devel ncurses-libs ncurses-static ncurses-term ocaml-curses ocaml-curses-devel -y

b. yum install openssl-devel zlib-devel –y

c. yum -y install make ncurses-devel gcc gcc-c++ unixODBC unixODBC-devel openssl openssl-devel

4). 进入解压后的目录   cd ./opt_src_20.0   

执行命令    ./configure --prefix=/opt/erlang --with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac

5). 安装  make&&make install

6). 建立软链接  ln -s /opt/erlang/bin/erl /usr/local/bin/erl

7). 配置环境  vi /etc/profile

ERLANG_HOME=opt/erlang
PATH=$ERLANG_HOME/bin:$PATH
export ERLANG_HOME
export PATH

使配置的环境生效  source /etc/profile

1.2 安装rabbitmq

1). 下载安装包   wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-generic-unix-3.6.10.tar.xz

2). 解压安装包  

xz -d rabbitmq-server-generic-unix-3.6.10.tar.xz

tar -xvf rabbitmq-server-generic-unix-3.6.10.tar

3). 进入解压后的目录后

cd sbin

./rabbitmq-server

或者后台启动

直接启动 ./rabbitmq-server 
后台启动 ./rabbitmq-server -detached 
开启插件管理页面 ./rabbitmq-plugins enable rabbitmq_management 
关闭服务 ./rabbitmqctl stop

4). 创建用户admin  密码admin00

./rabbitmqctl add_user admin admin00

./rabbitmqctl set_user_tags admin administrator

./rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

5). 在浏览器上登录  http://[IP]:15672 

2. 安装redis

cd /usr/local/src

wget http://download.redis.io/releases/redis-2.8.10.tar.gz

 

tar -zxvf redis-2.8.10.tar.gz

 

cd redis-2.8.10

 

make

 

make install

 

创建目录 /etc/redis

mkdir -p /etc/redis

将redis-2.8.10【/usr/local/src/redis-2.8.10】目录下的 redis.conf 复制到 /etc/redis 目录下

cp redis.conf /etc/redis/

vim /etc/redis/redis.conf

daemonize 把 no 改成 yes

说明:

a、默认情况Redis不是在后台运行,我们需要修改把redis放在后台运行:daemonize yes

b、redis安全策略默认本机访问,所以远程访问的话需要将 bind 127.0.0.1加#注释掉

启动redis    

/usr/local/bin/redis-server /etc/redis/redis.conf

3. 安装celery

pip3 install celery==4.3.0

4. python3 安装网上到处都是,这里就不描述了

 

 

 

 

三. celery部件组成

broker => rabbitmq

backend => redis

四. 实例项目

4.1 项目代码内容讲解

项目名: proj

目录:/mnt/celeryTest

完整的项目目录:

proj/

    -__init__.py    # 这个文件里是空的,不用理它,如果没有这个文件保险起见建一个空的

    -celery.py   # celey的配置项都在这里

    -tasks00.py   # 具体的任务文件

    -tasks01.py  #  具体的任务文件,为了表示任务可以分布在不同的文件里以便后期任务多了可以分类管理,这里写了两个任务文件

celery.py

from __future__ import absolute_import,unicode_literals  # 这句主要是为了避免同名包冲突的问题
from celery import Celery
from celery.schedules import crontab  # 这个包主要是用了配置定时器

app = Celery('proj',
              broker='amqp://[rabbitmq账号]:[rabbitmq密码]@[rabbitmq所在的服务器IP]:[rabbitmq的端口默认为5672]//',
              backend='redis://[redis所在的服务器IP]:[redis的端口默认为6379]/[redis的数据库为0-15]',
              include=['proj.tasks00','proj.tasks01'])
app.conf.update(
        result_expires=3600,
)
app.conf.beat_schedule={
    'every_5_min':{
        'task':'proj.tasks00.fun00',
        'schedule':crontab(minute='*/5')
    },
    'every_day_8':{
        'task':'proj.tasks01.fun01',
        'schedule':crontab(minute='0',hour='8',day_of_week='*',day_of_month='*',month_of_year='*')
    }
}
app.conf.timezone = 'Asia/Shanghai'
if __name__ == '__main__':
    app.start()

tasks00.py

from __future__ import absolute_import,unicode_literals
from proj.celery import app

@app.task
def fun00():
    print('Hello everyone, I'm fun00')

tasks01.py

from __future__ import absolute_import,unicode_literals
from proj.celery import app

@app.task
def fun01():
    print('Hello everyone, I'm fun01')

 

4.2 前台方式启动项目

1). 启动定时器

cd 到目录 /mnt/celeryTest

执行命令  celery -A proj beat

2). 启动工作者

cd 到目录 /mnt/celeryTest

执行命令  celery -A proj worker -l info

  4.3 后台方式启动项目

后台启动的方式需要做些设置

第一步:vim  /etc/default/celeryd

CELERYD_NODES="root" #节点名,这个可以随意取了名字
CELERY_BIN="/usr/bin/celery" #celery命令的绝对路径,不知道的可以使用whereis celery查找
CELERY_APP="proj" # celery的项目名,和celery.py中配置的项目一致
CELERYD_CHDIR="/mnt/celeryTest" # celery项目所在的路径
CELERYD_OPTS="
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值