celery worker集群搭建

举个小栗子,在生产环境下,我们有两个异步任务需求,需要分别部署在两台服务器上,并用不同的队列实现

  1. 用户邮件发送
  2. pageview统计

主要的注意点,在任务执行时需指定queue,routing_key

文件结构

celery_demo                    # 项目根目录
    ├── celery_app             # 存放 celery 相关文件
    │   ├── __init__.py
    │   ├── celeryconfig.py    # 配置文件
    │   ├── task1.py           # 任务文件 1
    │   └── task2.py           # 任务文件 2
    └── client.py              # 应用程序

init.py

from celery import Celery
 
app = Celery('demo')                                # 创建 Celery 实例
app.config_from_object('celery_app.celeryconfig')   # 通过 Celery 实例加载配置模块


__all__ = ['app']

celeryconfig.py

from kombu import Queue
from kombu import Exchange


BROKER_URL = 'redis://192.168.31.45:6379/0'               # 指定 Broker
CELERY_RESULT_BACKEND = 'redis://192.168.31.45:6379/1'  # 指定 Backend
 
CELERY_TIMEZONE='Asia/Shanghai'                     # 指定时区,默认是 UTC
# CELERY_TIMEZONE='UTC'                            
 
CELERY_IMPORTS = (                                  # 指定导入的任务模块
    'celery_app.task1',
    'celery_app.task2'
)

task_queues = (
    Queue('default', exchange=Exchange('default'), routing_key='default'),
    Queue('email', exchange=Exchange('email'), routing_key='email'),
    Queue('pageview', exchange=Exchange('pageview'), routing_key='pageview'),
)

task_routes = {
    'celery_app.task1.add': {'queue': 'email', 'routing_key': 'email'},
    'celery_app.task2.multiply': {'queue': 'pageview', 'routing_key': 'pageview'},
}

task1.py

import time
from celery_app import app
 
@app.task
def add(x, y):
    time.sleep(2)
    return x + y

task2.py

import time
from celery_app import app
 
@app.task
def multiply(x, y):
    time.sleep(2)
    return x * y

client.py

from celery_app import task1
from celery_app import task2

task1.add.apply_async(args=[2, 8],queue="email",routing_key="email")
task2.multiply.apply_async(args=[3, 7],queue="pageview",routing_key="pageview")

print('hello world')

启动woker

server1:

$ celery worker -A celery_app -l info -Q email

server2:

$ celery worker -A celery_app -l info -Q pageview

转载于:https://www.cnblogs.com/zenan/p/11082476.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值