使用uWSGI做celery beat主备服务管理

什么是uWSGI

使用python的同学对uWSGI应该都比较熟悉,它一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。同时它还具有配置、进程管理、socket创建、监控、日志记录、共享内存块、ipc、集群成员和 uWSGI订阅服务器的功能。
今天要介绍的是uWSGI在1.9版本后新加uWSGI Legion子系统,这个功能非常的惊喜。众所周知的在一个celery集群中只能同时存在一个beat进程,这么重要的一个进程却只能是单点,风险非常高,也调研过包括keepalive和zookeeper,但在使用和搭建上都比较复杂,关键天生的不太适合python。废话不多说,我们一起看看如何用uWSGI来做celery管理beat

服务配置

环境准备

这部分比较简单,我只说关键步骤

  1. 需要两台linux服务器,我使用的ubuntu14.04, 地址分别是:192.168.1.161, 192.168.1.162
  2. 分别在两台设备上安装virtualenv ,并创建虚拟环境。
  3. 在虚拟环境下通过pip安装uWSGI和celery。
  4. 安装redis。

测试代码和配置

创建celery测试项目

废话不多说,直接上代码,新建目录 uwsgi-beat,创建测试app
1、tasks.py

from celery_app import app

@app.task(queue='default')
def add(x, y):
    return x + y

@app.task(queue='default')
def sub(x, y):
    return x - y

2、celery_config.py

#-*-coding=utf-8-*-
from __future__ import absolute_import

from celery.schedules import crontab
# 中间件
BROKER_URL = 'redis://192.168.1.33:6379/7'
# 结果存储
CELERY_RESULT_BACKEND = 'redis://192.168.1.33:6379/8' 
# 默认worker队列
CELERY_DEFAULT_QUEUE = 'default'
# 异步任务
CELERY_IMPORTS = (
    "tasks"
)

from datetime import timedelta
# celery beat
CELERYBEAT_SCHEDULE = {
   
    'add':{
   
        'task':'tasks.add',
        'schedule':timedelta(seconds=3),
        'args':(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值