使用supervisor 启动 celery 并根据不同的环境需求,配置环境变量_superviosr 设置环境变量-程序员宅基地

技术标签: celery  配置文件  supervisord  工作整理  运行环境  

以为在做公司项目,所以当然有开发环境和生产环境。我们公司使用 Jenkins来实现自动部署,将 Jenkins 生成的 docker部署到AWS上.

我们项目使用supervisor来启动服务。

但是由于同一个项目要做开发环境进行开发测试,然后再能部署到生产环境,而且我们公司的开发环境和生产环境是物理隔离的,所以必须要有两套不一样的环境。

查了很久 最终还是在官网上查到了配置方法。(不过官网文档有些混乱 等我想第二次查找时 已经找不到了。)

不多说 直接上代码

在主要的task 文件中需要加上默认的环境配置

from celery import Celery
import os

#: Set default configuration module name
os.environ.setdefault('CELERY_CONFIG_MODULE', 'celerytask.celeryconfig')
celery_environment =os.environ.setdefault('CELERY_CONFIG_MODULE', 'celerytask.celeryconfig')

if celery_environment=="celerytask.celeryconfig-dev":
    rw.set_conf_name("develop")
app = Celery()
app.config_from_envvar('CELERY_CONFIG_MODULE')


@app.task()
def run_algorithm(a, b):
    return a+b

然后就是两个不一样的配置文件 celeryconfig.py 以及celeryconfig-dev.py (这个名字随意起)

 

celeryconfig.py (prod 环境的 配置文件)

from kombu import Exchange, Queue

BROKER_URL = '你的 prod BROKER_URL'
RESULT_BACKEND = '你的 prod RESULT_BACKEND'

# defintion a exchange
default_exchange = Exchange('dedfault', type='direct')
my_exchange = Exchange('routeExchange', type='direct')

#一些其他配置参数

CELERY_QUEUES = (
    Queue('default', default_exchange, routing_key='default'),
    Queue('routeAlgorithm', my_exchange, routing_key='routeAlgorithm')
)


CELERY_DEFAULT_QUEUE = 'default'
CELERY_DEFAULT_EXCHANGE = 'default'
CELERY_DEFAULT_ROUTING_KEY = 'default'

CELERY_ROUTES = (
    {'tasks.run_algorithm': {
        'queue': 'routeAlgorithm',
        'routing_key': 'routeAlgorithm'
    }
    },
)

CELERY_IMPORTS = ("tasks",)

celeryconfig-dev.py (dev 环境的 配置文件) 

from kombu import Exchange, Queue

BROKER_URL = '你的 dev BROKER_URL'
RESULT_BACKEND = '你的 dev RESULT_BACKEND'

# defintion a exchange
default_exchange = Exchange('dedfault', type='direct')
my_exchange = Exchange('routeExchange', type='direct')

#一些其他配置参数

CELERY_QUEUES = (
    Queue('default', default_exchange, routing_key='default'),
    Queue('routeAlgorithm', my_exchange, routing_key='routeAlgorithm')
)


CELERY_DEFAULT_QUEUE = 'default'
CELERY_DEFAULT_EXCHANGE = 'default'
CELERY_DEFAULT_ROUTING_KEY = 'default'

CELERY_ROUTES = (
    {'tasks.run_algorithm': {
        'queue': 'routeAlgorithm',
        'routing_key': 'routeAlgorithm'
    }
    },
)

CELERY_IMPORTS = ("tasks",)

 

 

这里是 Dev环境中需要启动的 supervisord.conf

[supervisord]
nodaemon=true
[program:nginx]
command=/usr/sbin/nginx
[program:uwsgi]
command =/usr/local/bin/uwsgi --ini  /var/www/app/conf/uwsgi-dev.ini

[program:celery]
#Set full path to celery program if using virtualenv
command=celery worker -A tasks --loglevel=INFO
directory=/var/www/app/celerytask
environment=CELERY_CONFIG_MODULE="celerytask.celeryconfig-dev"

autostart=true
autorestart=true
startsecs=10
stopwaitsecs = 600

下面是 prod环境中的 supervisord.conf

[supervisord]
nodaemon=true

[program:nginx]
command=/usr/sbin/nginx

[program:uwsgi]
command =/usr/local/bin/uwsgi --ini  /var/www/app/conf/uwsgi.ini

[program:celery]
; Set full path to celery program if using virtualenv
command=celery worker -A tasks --loglevel=INFO

directory=/var/www/app/celerytask
environment=CELERY_CONFIG_MODULE="celerytask.celeryconfig"

autostart=true
autorestart=true
startsecs=10
stopwaitsecs = 600

唯一的区别就是  在这里改成你项目的配置文件名,分清不同环境。

environment=CELERY_CONFIG_MODULE="celerytask.celeryconfig"

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/pcjdpcq/article/details/80976543

智能推荐

CentOS下网卡启动、配置等ifcfg-eth0教程_centos7 ifcfg-eth0 network=192.168.1.0-程序员宅基地

文章浏览阅读357次。步骤1、配置/etc/sysconfig/network-scripts/ifcfg-eth0 里的文件。it动力的CentOS下的ifcfg-eth0的配置详情:[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE="eth0"HWADDR="00:0C:29:FD:FF:2A"NM_C_centos7 ifcfg-eth0 network=192.168.1.0

pl/sql异常处理_假设manager表中有3列。mid(主键列),mname(管理员名称)和mgrade(管理员级别)-程序员宅基地

文章浏览阅读663次。1、预定义异常是指oracle系统为一些常见错误定义好的异常,例如表中的主键值重复,以及除数为0等。oracle预定义异常:命名的系统异常产生原因ACCESS_INTO_NULL未定义对象CASE_NOT_FOUNDCASE 中若未包含相应的 WHEN ,并且没有设置 ELSE 时_假设manager表中有3列。mid(主键列),mname(管理员名称)和mgrade(管理员级别),

修改Active Directory域控制器IP地址-程序员宅基地

文章浏览阅读688次。在企业中,部署微软Active Directory域控制器时,常常因为以下几个原因需要重新配置DC服务器的IP地址:a) 管理员配置了错误的DC服务器的IP地址;b) 因网络变更,重新规划企业IP地址。这两种现象常常在企业中出现,也经常会出现域中资源与DC服务器无法正常通信,而造成一些未知的错误。今天给大家演示当修改企业Active Directory域控制器IP地址时,需要..._域的active directory域控制器的ip

老毛桃pe装机工具一键还原系统_一键还原pe版-程序员宅基地

文章浏览阅读4.8k次。系统崩溃后,很多菜鸟朋友会六神无主,不知接下来怎么办。如果是老手,已经屡见不鲜了,因为只需一键还原系统就可以恢复到原来的工作状态。下面不妨跟小编一起继续看看怎么一键还原系统。   ①制作一个老毛桃win8pe工具u盘,制作方法可参考“老毛桃win8pe工具箱u盘制作图文教程”;   ②设置电脑u盘开机启动,具体步骤可参考“将u盘启动盘设置为开机首选方法”;   ③不清楚电脑开机快捷键的_一键还原pe版

UGUI——Text 部分文字 改变颜色+改变大小_ugui text 设置尺寸和颜色-程序员宅基地

文章浏览阅读2.3k次。文章目录1.项目要求:2.核心原理:3.改变实例:4.显示效果:1.项目要求:Text部分文字需要变色,还要变大。2.核心原理:用html语法进行编辑改变颜色:下图 蓝色部分改变大小:下图 红色部分3.改变实例:4.显示效果:..._ugui text 设置尺寸和颜色

bootstrapvalidator 验证。 整理的一些类型-程序员宅基地

文章浏览阅读223次。message: 'This value is not valid', container: 'tooltip', //修改提示框样式 feedbackIcons: { valid: 'glyphicon glyphicon-ok', invalid: 'glyp..._bootstrap密码必须包含有小写英文字母、大写英文字母

随便推点

Linux下查看目录文件数和文件大小_ls 查看目录大小-程序员宅基地

文章浏览阅读3.5w次,点赞3次,收藏33次。一、查看当前目录下文件个数在linux下查看目录下有多少文件可以用:ls -l 命令查看,ls -lR 递归查看所有目录,如果文件很多,则用wc命令 和 grep 命令进行过滤。wc命令显示输出的行 列 字符数,-l表示仅列出行、-w表示仅列出多少字、-m表示仅列出多少字符; grep用于过滤输出信息,不做详细介绍;如下:1、ls -l获取当前目录下信息2、ls -l..._ls 查看目录大小

Python自学笔记-lambda函数(来自廖雪峰的官网Python3)-程序员宅基地

文章浏览阅读147次。感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下。以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看。匿名函数通过对比可以看出,匿名函数lambda x: x * x实际上就是:def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x表示函数..._python利用lambda函数代替求和函数sum与求差函数sub

Soul源码分析–soul-admin源码分析_souappl-admin-程序员宅基地

文章浏览阅读328次。Soul源码分析–soul-admin源码分析前言源码分析总结前言在上一篇文章中,介绍了 soul-admin 怎么管理和配置网关的请求,其核心原理是基于各种插件来实现对应的功能。现在我们来看看后台是怎么来管理和实现动态配置。源码分析在分析源码之前,先看下图,页面显示加载的插件列表会对应后端的请求,根据后端请求,找到对应的controller类然后找到对应的方法,在上图可以看到这里是访问 plugin 中默认为空的 mapping,传入到分页相关的参数,然后去查询数据库中对应的插件记录数据库_souappl-admin

oracle有plsql MySQL呢_oracle plsql连接不上数据库-程序员宅基地

文章浏览阅读317次。oracle客户端和plsql developer安装部署应用场景当一个服务器上安装了oracle数据库,我们需要通过外在工具来连接该oracle数据库,来更加方便简洁的操作数据库,对数据库进行增删改查的操作,这篇文章介绍了用Navicat来连接oracle,但是比较正式的还是采用plsql来操作oracle,毕竟navicat连oracle速...文章wsc4492017-11-101157浏览..._database2sharp 连不上数据库

java数组如何赋值_java数组如何赋值-程序员宅基地

文章浏览阅读1.5w次。Java 语言中数组必须先初始化,然后才可以使用。所谓初始化,就是为数组的数组元素分配内存空间,并为每个数组元素赋初始值。初始化数组有以下 3 种方式:1)使用 new 指定数组大小后进行初始化使用 new 关键字创建数组,在创建时指定数组的大小。语法如下:type[] arrayName = new int[size];示例:int[] number = new int[5];number[0]..._数组赋值java

设计模式十三之桥接模式_桥接模式的角色-程序员宅基地

文章浏览阅读144次。设计模式十三之桥接模式1. 模式的定义与特点1.1 模式的定义1.2 模式的特点1.3 模式的使用场景2. 模式的结构与实现2.1 模式的结构2.2 模式的实现3. 模式在开源软件中的应用3.1 JDBC API  在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。如何设计类似于 Photoshop 这样的软件,能画不同形状和不同颜色的图形呢?如果用继承方式,m ..._桥接模式的角色

推荐文章

热门文章

相关标签