Celery 服务搭建
整个项目工程如下

__init__.py
"""
注意点:python3.7 需要执行 pip install --upgrade https://github.com/celery/celery/tarball/master
否则会报 from . import async, base SyntaxError: invalid syntax celery -A __init__ worker --concurrency=5 -l INFO -Q celery,save_redis
celery -A __init__ worker -l info -Q save_mongo
cd /Users/admin/PycharmProjects/function_test/adminSyS/mq&&celery -A __init__ worker --concurrency=5 celery 启动 --autoscale=10,3 当worker不足时自动加3-10个
celery -A __init__ worker --concurrency=5 -l INFO -Q celery,save_redis2,save_redis --autoscale=10,3 supervisor 配置
[program:celery]
directory = /data/app/adminSyS/mq
command = /data/app/adminSyS/venv/bin/celery -A __init__ worker --concurrency=5 -l INFO -Q celery,save_redis
autostart = true
autorestart = true
startsecs = 5
startretries = 3 监控:
文档 https://flower-docs-cn.readthedocs.io/zh/latest/install.html
pip install flower
celery flower --broker=redis://:z1234567@47.93.235.228:6379/5 --port=5555
测试 http://47.93.235.228:9114
"""
import os
import sys
sys.path.append(os.path.abspath(os.path.dirname(__file__)) + "/..")
from celery import Celery app = Celery(include=["mq.tasks"])
app.config_from_object("celeryconfig") # 指定配置文件
celeryconfig.py
import os
import sys sys.path.append(os.path.abspath(os.path.dirname(__file__)) + "/..")
from kombu import Queue, Exchange BROKER_URL = "redis://:redis@127.0.0.1:6379/5" # 消息代理
CELERY_RESULT_BACKEND = "redis://:redis@127.0.0.1:6379/6" # 任务执行结果存放地址
CELERY_TASK_SERIALIZER = "json" # 任务序列化和翻序列化的方案
CELERY_RESULT_SERIALIZER = "json" # 读取任务结果序列化方式
CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 # 任务过期时间
CELERY_ACCEPT_CONTENT = ["json", "msgpack"] # 接受的任务类型
BROKER_TRANSPORT_OPTIONS = {'visibility_timeout': 86400} # 任务重发时间
CELERYD_MAX_TASKS_PER_CHILD = 400 # 每个worker执行了多少任务就会自动重启防止内存泄漏 # 指定任务队列 save_redis save_redis2
CELERY_QUEUES = (
Queue("default", Exchange("default"), routing_key="default"),
Queue("save_redis", Exchange("save_redis"), routing_key="save_redis"),
Queue("save_redis2", Exchange("save_redis2"), routing_key="save_redis2")
) # mq.tasks.taskA mq.tasks.taskB 具体函数名
CELERY_ROUTES = {
'mq.tasks.taskA': {"queue": "save_redis", "routing_key": "save_redis"},
'mq.tasks.taskB': {"queue": "save_redis2", "routing_key": "save_redis2"}
}
tasks.py
from mq import app
import redis
import time rds = redis.Redis(
host="localhost",
port=6379,
db=7,
password="redis") # 客户端 @app.task
def taskA(x, y):
time.sleep(10)
rds.setex(name="taskA", value=x + y, time=3600)
return x + y @app.task
def taskB(x, y, c):
time.sleep(10)
rds.setex(name="taskB{}".format(c), value=x + y, time=3600)
return x + y
test.py
import sys
import os sys.path.append(os.path.abspath(os.path.dirname(__file__)) + "/..")
from mq.tasks import taskA, taskB #re1 = taskA.delay(100, 200)
# print(re1)
# print(re1.status) # 服务端 for i in range(10):
re2 = taskB.delay(100, i, i)
print(re2)
print(re2.status)
celery客户端启动 save_redis2,save_redis 代表函数名 --autoscale=10,3 当work不够用时自动起3-10个进程
celery -A __init__ worker --concurrency=5 -l INFO -Q celery,save_redis2,save_redis --autoscale=10,3
#启动方式
../venv/bin/celery -A __init__ worker --concurrency=5 -l INFO -Q celery,save_redis2,save_redis --autoscale=10,3
# 启动方式打印log
command=/home/op/saiyan_game_center/venv/bin/celery -A __init__ worker --concurrency=8 -l INFO -Q upload_box_task --autoscale=5,3 --logfile=/home/op/saiyan_game_center/logs/log.log
celery web监控
文档:https://flower-docs-cn.readthedocs.io/zh/latest/install.html
安装:pip install flower
启动:celery flower --broker=代理url --port=5555
celery flower --broker=redis://:redis@127.0.0.1:6379/5 --port=5555
Celery 服务搭建的更多相关文章
- ServiceStack.Hello——跨平台.net REST api服务搭建
ServiceStack.Hello--跨平台.net REST api服务搭建 自己创建: https://github.com/ServiceStack/ServiceStack/wiki/Cre ...
- WCFRESTFul服务搭建及实现增删改查
WCFRESTFul服务搭建及实现增删改查 RESTful Wcf是一种基于Http协议的服务架构风格, RESTful 的服务通常是架构层面上的考虑. 因为它天生就具有很好的跨平台跨语言的集成能力 ...
- 微信小程序语音识别服务搭建全过程解析(项目开源在github)
silk v3录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) ## 重要的写在前面 重要事项一: 目前本文中提到的API已支持微信小程序录音文件格式:silk v ...
- 微信小程序语音识别服务搭建全过程解析(https api开放,支持新接口mp3录音、老接口silk录音)
silk v3(或新录音接口mp3)录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) 重要的写在前面 重要事项一: 所有相关更新,我优先更新到我个人博客中,其它地方 ...
- Git服务搭建及github使用教程
.pos { position: fixed; top: 35%; left: 90% } .pos a { border: 2px solid white; background: #99CCFF; ...
- eureka服务搭建
Server端 引入eureka server的maven依赖 引入依赖时无需给定eureka的版本号,maven会根据当前使用的SpringCloud版本来判断应该引入哪个版本的euraka ser ...
- NodeJs之服务搭建与数据库连接
NodeJs之服务搭建与数据库连接 一,介绍与需求分析 1.1,介绍 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻 ...
- JumpServer1.0 服务搭建
JumpServer1.0 服务搭建 系统环境配置 setenforce 0 systemctl stop iptables.service systemctl stop firewalld.serv ...
- Linux-ftp服务搭建
云服务器ESC 部署vsftpd服务 记一次ftp服务搭建的采坑过程,这个坑一直卡了很久时间,都给忘记了.最近由于公司项目需要部署FTP,经过各种采坑,终于把这个坑给填上了.废话不多说,开干 环境说明 ...
随机推荐
- Tomcat get请求中文参数乱码
场景:使用Tomcat容器进行get方式传递中文参数到后台乱码. 原因:Tomcat默认的编码方式是ISO--. 解决方案: . 设置cofg-server.xml中的<Connector> ...
- django小知识(2)
昨日内容回顾 1.choices参数 class Userinfo(models.Model): username = ... age = ... gender_choice = ( (1,'male ...
- eclipse解决中文字体太小问题(转载)
最近新装了Win7,打开eclipse3.7中文字体很小,简直难以辨认.在网上搜索发现这是由于Eclipse 3.7 用的字体是 Consolas,显示中文的时候默认太小了. 解决方式有两种:一. ...
- cron使用
每天1点执行脚本 0 1 * * * /home/xtrabackup.sh service crond restart / systemctl restart crond 每隔5分钟 */5 * * ...
- 20180520模拟赛T3——chess
[问题描述] 小美很喜欢下象棋. 而且她特别喜欢象棋中的马. 她觉得马的跳跃方式很独特.(以日字格的方式跳跃) 小芳给了小美一张很大的棋盘,这个棋盘是一个无穷的笛卡尔坐标. 一开始\(time=0\) ...
- 20180418模拟赛T2——Gym
Gym (Gym.cpp/c/pas) 题目描述 Description 木吉终于到达了 VAN 様的老巢 gym,然而他已经是孤身一人.他决定和 VAN 様来一场对决.他决定和 VAN 様玩♂跑♂步 ...
- loadrunner:传json
loadrunner传k-v,用web_custom_request函数. init里面执行登录,根据返回获取到tokenId,action中,执行登录后的操作. 详细脚本如下: vuser_init ...
- curl多线程下载类
<?php /** * curl多线程下载类 */class MultiHttpRequest{ public $urls = array (); private $res = array () ...
- Spring Data JPA:关联映射操作
1.一对一的关系关联 需求:用户和角色一对一关联 package com.example.jpa.pojo; import javax.persistence.*; @Entity @Table(na ...
- 开源项目(5-1) yolo万能检测识别
(1)Windows10+YOLOV3+VisualStudio2017最新版本超详细过程 https://blog.csdn.net/KID_yuan/article/details/8838026 ...