用supervisor控制celery时的脚本

注意启停的先后顺序及判断即可。

这样,在更改task之后,要重启就方便很多啦。。

#!/bin/sh

supervisord_count=`ps -elf | grep celery | grep -v grep | wc -l`
if [ $supervisord_count -gt 0 ]; then
    ps aux|grep -v grep|grep supervisord|awk '{print $2}'|xargs kill -9
fi

celery_count=`ps -elf | grep celery | grep -v grep | wc -l`
if [ $celery_count -gt 0 ]; then
    ps aux|grep -v grep|grep celery|awk '{print $2}'|xargs kill -9
fi

/usr/bin/python /usr/local/python27/bin/supervisord -c /P/supervisord_prd.conf
sh /usr/local/nginx/sbin/uwsgi9090 reload
/usr/local/nginx/sbin/nginx -s reload

echo 'finished!'

另给一个最基本的supervisor的设置:

; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
;
; Notes:
;  - Shell expansion ("~" or "$HOME") is not supported.  Environment
;    variables can be expanded using this syntax: "%(ENV_HOME)s".
;  - Comments must have a leading space: "a=b ;comment" not "a=b;comment".

[supervisord]
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB        ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10           ; (num of main logfile rotation backups;default 10)
loglevel=info                ; (log level;default info; others: debug,warn,trace)
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false               ; (start in foreground if true;default false)
minfds=1024                  ; (min. avail startup file descriptors;default 1024)
minprocs=200                 ; (min. avail process descriptors;default 200)
;umask=022                   ; (process file creation umask;default 022)
;user=chrism                 ; (default is current user, required if root)
;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')
;directory=/tmp              ; (default is not to cd during start)
;nocleanup=true              ; (don't clean up tempfiles at start;default false)
;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)
;environment=KEY="value"     ; (key value pairs to add to environment)
;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL  for a unix socket

[program:celeryd]
command=/usr/local/python27/bin/celery worker -A XXXX -c 4   -l INFO -n celeryd@deploy
stdout_logfile=/var/log/celeryd.log
stderr_logfile=/var/log/celeryd.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs=600

;[program:celerybeat]
;command=/usr/local/python27/bin/celery worker -A XXXX -c 4   -B -n celerybeat@ping
;stdout_logfile=/var/log/celeryd.log
;stderr_logfile=/var/log/celeryd.log
;autostart=true
;autorestart=true
;startsecs=10
;stopwaitsecs=600

时间: 2024-08-12 22:02:46

用supervisor控制celery时的脚本的相关文章

重建控制文件时resetlogs与noresetlogs的使用情况

重建控制文件时resetlogs与noresetlogs的使用情况 控制文件中记录着数据库的数据文件,日志文件,备份数据等信息,更为重要的,控制文件中还记录了数据库的检查点 和scn信息,这些信息在数据恢复的过程中将起到关键性作用. 一个正常运行的数据库,通常控制文件都存在多份镜像,这些镜像的内容是完全相同的,oracle缺省就创建多份控制 文件更说明了控制文件的重要: SQL> select name from v$controlfile; NAME ---------------------

unity3-unity问一下用C#做脚本,在切换到别的场景中时这个脚本中的staic、new为什么还存在

问题描述 unity问一下用C#做脚本,在切换到别的场景中时这个脚本中的staic.new为什么还存在 unity3d这个脚本在这个场景(A)中,不过我切换到别的场景(B)中,前面场景(A)的staic.new为什么还存在.当我切换回来A时static定的变量值没变,如果清除了应该归0呀.切换场景不是这个场景就结束了吗,应该消除static.new的缓存的吧?? 解决方案 C#中的static代表一直存在内存中,不会被释放,所以如果你的数据不是整个生命周期都有效,那就不要随便static,至于n

XML用CSS控制属性时,在chrome打开有效果,但是在IE打开就没有用

问题描述 XML用CSS控制属性时,在chrome打开有效果,但是在IE打开就没有用 <?xml version=""1.0"" encoding=""UTF-8"" ?><?xml-stylesheet type=""text/css"" href=""config.css""?> 中国美国英国德国 #a1{ font-s

android properties-android机顶盒 使用遥控器控制listview时滚动速度太快,如何控制listview滚动速度

问题描述 android机顶盒 使用遥控器控制listview时滚动速度太快,如何控制listview滚动速度 android机顶盒项目的节目列表,如果一直按着遥控器下键,则listview一直快速滚动,速度太快了,怎么去控制listview的滚动速度? 解决方案 这个只能控制遥控器的按键逻辑,可以按住超过5秒的话,只响应一次.

vmware-putty控制Linux时,出现Network error:connection refused

问题描述 putty控制Linux时,出现Network error:connection refused 环境:vmware redhat6.2 配置ssd putty控制 1.linux上的ssh server端程序已经安装,并且服务已经启动 2.防火墙已经关闭 3.ping linux的iP可以通,但是linux ping windows 不通 输入sudo iptables -L时,出现,而不是 tcp dpt:ssh 解决方案 http://www.5yun.org/154.html

linux驱动-linux下写驱动控制gpio时的两种方法区别

问题描述 linux下写驱动控制gpio时的两种方法区别 linux下写驱动控制gpio时,见过两种方法: 用request_mem_region函数和ioremap等得到控制寄存器的地址,然后用iowrite32函数控制该gpio 用gpio_request 和 gpio_set_value函数来控制gpio引脚 请问:这两种方法有什么区别,分别适用什么场合? 解决方案 http://blog.csdn.net/mirkerson/article/details/8464290http://b

iOS语音实时聊天时,另外一端设备有杂音和回声,接口中能够控制语音时麦克风的的音量吗?

问题描述 iOS语音实时聊天时,另外一端设备有杂音和回声,接口中能够控制语音时麦克风的的音量吗? 解决方案 测试的时候,两台设备别离的太近,环信SDK没有提供控制音量的接口.

使用celery时要注意的任务调用形式

因为之前,一直用django和celery紧密集成,不分家. 所以使用时参考了网上的配置之后,没有变更过. 最近,和洪军想用k8s的pod重新规划系统构架时,这个问题才又浮了出来. 只是我们的task和framework集成太深,celery worker确实不容易拆出来, 但原则还是要知道的. 今天看书,代码及注释中说明了,如果client要调用worker上的task, 只需要传递模块内的任务名称,及相关参数即可!!! 而django和celery合作时,是相互缠绕在一起的,无法明辩.

rhcs做HA时用脚本释放资源

场景: CentOS6.3的二次封装版本,安装hortonworks的hadoop发行版,并按照其官方文档实现高可用,但无fence设备支持,因此导致断网和断电测试时,备用HA节点无法得到资源释放的通知. 因此,笔者简单写了一个脚本,让HA的备节点在主节点断网和断电时能够通过简单测试得知并获取资源,以实现真正意义的HA. 思考: 如何判断网络的连通性? 如何判断VIP的可用性? 如何判断自身的故障? 如何尽可能防止脑裂? 实现: 1.当自身节点IP均不正常时,使本节点重启 2.当检测自身网络正常