在这里我选择redis作为celery异步任务的中间人,系统选择CentOS6.5 64位。
redis、celery和supervisor的安装参见官方文档。

安装完毕后:

1, 创建celery的实例/home/user_00/learn/tasks.py文件

tasks.py:

# -*-coding:utf-8-*-
from celery import Celery, platforms

app = Celery('tasks', backend='redis://localhost:6379/1', broker='redis://localhost:6379/0')

# celery不能root用户启动解决(C_FORCE_ROOT environment),加上这一行即可
platforms.C_FORCE_ROOT = True

@app.task
def add(x, y):
    return x + y

2, 启动redis服务和celery职程服务器,

redis-server
celery -A tasks worker --loglevel=info

在tasks.py文件同级目录下打开python shell:

In [1]: from tasks import add

In [2]: add.delay(4, 6)
Out[2]: <AsyncResult: 3e346dba-f8dc-4295-bc68-bba0bf9c1f94>

In [10]: result.get()
  Out[10]: 10

同时可以看到celery服务的log输出:10, 这个时候关闭celery职程服务, 下一步将其加入到supervisor的进程管理器中

3, 安装好supoervisor之后, 生成supervisor配置文件

echo_supervisord_conf > /etc/supervisord.conf

用vim打开刚刚生成的配置文件supervisord.conf, 编辑最后两行改为:

[include]
files = sv.ini

这时候创建/etc/sv.ini文件:

touch /etc/sv.ini

编辑sv.ini文件, 写入以下内容:

[program:celery]
command=celery -A tasks worker --loglevel=info
directory=/home/user_00/learn
stdout_logfile=/home/user_00/learn/logs/celery.log
autorestart=true
redirect_stderr=true

同时创建/home/user_00/learn/logs/celery.log

这个时候名为celery的进程就配置好了

4.变更配置文件之后,要加载最新的配置文件:

supervisorctl update

启动supervisor服务:

supervisord

进入supervisor管理界面:

supervisorctl

启动celery进程:

start celery

5.这个时候测试一下

进入/home/user_00/learn/logs目录下,监控celery.log

tail -f *

在tasks.py文件同级目录下打开python shell:

In [1]: from tasks import add

In [2]: add.delay(4, 6)
Out[2]: <AsyncResult: 3e346dba-f8dc-4295-bc68-bba0bf9c1f94>

In [10]: result.get()
  Out[10]: 10

可以在监控的log信息中看到输出结果:10

这个时候就完成了这个用supervisor管理celery进程的实例.

celery和supervisor配合使用,实现supervisor管理celery进程的更多相关文章

  1. 【Python】supervisor安装和管理celery

    参考:http://blog.csdn.net/wawa8899/article/details/52743861 参考:http://www.cnblogs.com/mountaingeek/p/5 ...

  2. 使用Supervisor管理Celery进程。

    讲过一篇celery的,但是celery启动后并不是daemon的,在生产环境中这肯定是不可以的,那怎么办呢? 这就需要使用supervisor进行进程管理了,下面详细介绍. 一. superviso ...

  3. 使用 supervisor 管理 Celery 服务

    使用 supervisor 管理 Celery 服务 Celery 后台运行 如果我们想让celery worker运行在后台而不是终端上,在后台以守护进程的方式运行,我们可以使用supervisor ...

  4. supervisor 管理uwsgi 进程

    Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动 重启.它是通过fork/exec的方式把这些被管理的进 ...

  5. 使用Supervisor管理Linux进程

    使用Supervisor管理Linux进程 简介 Supervisor是一个C/S系统,它可以在类UNIX系统上控制系统进程,由python编写,提供了大量的功能来实现对进程的管理. 安装 sudo ...

  6. supervisor安装以及监控管理rabbitmq消费者进程

    简介:Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启. 1.安装 apt-get install ...

  7. Python中Celery 的基本用法以及Django 结合 Celery 的使用和实时监控进程

    celery是什么 1 celery是一个简单,灵活且可靠的,处理大量消息的分布式系统 2 专注于实时处理的异步任务队列 3 同时也支持任务调度 执行流程 Celery 基本使用 tasks.py i ...

  8. celery 基础教程(五):守护进程

    一 守护进程方式启动 https://blog.csdn.net/p571912102/article/details/82735052 文件目录如下 . ├── config.py ├── main ...

  9. 用Supervisord管理Python进程

    http://feilong.me/2011/03/monitor-processes-with-supervisord Supervisord是用Python实现的一款非常实用的进程管理工具,类似于 ...

随机推荐

  1. python 基础 2.3 for 循环

    #/usr/bin/python #coding=utf-8 #@Time   :2017/10/16 10:05 #@Auther :liuzhenchuan #@File   :for 循环.py ...

  2. MySQL 5.7 等高版本关于JDBC驱动的几个问题

    https://blog.csdn.net/dj673344908/article/details/85223313 mysql 5.7 用8.0版本的驱动可以,5.1版本也可以,5.5.5.6.5. ...

  3. 计算机网络--DNS

    1.域名系统DNS(domain name system)是因特网使用的命名系统,用来把便于人们时用的机器名字转换为IP地址.因特网的域名系统DNS被设计成一个联机分布式数据库系统,并采用客户服务器方 ...

  4. html学习笔记(1)--处理特殊字符以及其他的一些小细节

    冬日深夜,照着一本html的书籍练习,忍不住将一些常识记下来.书名是:<HTML与CSS入门经典> by [美] Julie Meloni(这是一位女士) 1.在大多数浏览器中,<s ...

  5. TVirtualStringTree的Minimal例子学习

    预步骤第一步,定义数据结构type PMyRec = ^TMyRec; TMyRec = record Caption: WideString; end;预步骤第二步,规定取得节点数据时候的大小pro ...

  6. get_linux_ip_info.sh 获取ip地址

    linux 获取ip地址 get_linux_ip_info.sh #!/bin/bash #/告诉使用者,这程序的用户是从ipconfig 命令中获取IP地址 echo "该程序是从命令中 ...

  7. JavaScript及jQuery学习小结

    最近几天学习了很多关于JavaScript和jQuery的文章,稍作梳理后,总结如下. 1.jQuery入门系列 环境搭建 只需引用一个jQuery库文件,即可完成jQuery的环境搭建. 选择器 j ...

  8. centos下安装nodejs及websocket

    软件环境: VMware Workstation CentOS 6.5 NodeJS v0.12.5 安装过程: Step 1.确认服务器有nodejs编译及依赖相关软件,如果没有可通过运行以下命令安 ...

  9. iOS define 宏定义 和 const定义常量区别

    const   const 是c++中的修饰符.  c++中常用来定义常量,修饰左值. #define 宏定义语句, 在预处理阶段直接做文本替换,不做类型检查. 它们之间的最大区别: 1.  对于co ...

  10. uboot中添加自定义命令

    uboot中可以通过修改源程序来添加自定义命令,进一步扩展uboot的功能. 我想在uboot下添加一条新的命令(名为varcpy),用来拷贝uboot中的环境变量. 修改方式如下: 创建新文件com ...