基于Http协议用Flask模块实现的队列系统,可用于多台终端间建立生产消费队列。
主要用于分布式计算任务分发。
- 字符串
- 整数
- 浮点数
- 布尔
- JSON
下载代码
导入到项目
安装依赖
from apiserver import app
from chain import Memory,Redis
app = app
app.chain = Memory()
if __name__ == '__main__':
app.run()
from apiserver import app
from chain import Memory,Redis
app = app
app.chain = Redis(host='127.0.0.1')
if __name__ == '__main__':
app.run()
可选参数:
Memory:
lasting=False # 数据是否持久化 默认 False
filename='Chain.json' # 持久化保存路径 默认 'Chain.json'
Redis:
host='127.0.0.1', # redis服务器ip 默认 127.0.0.1
port=6379, # 端口号 默认 6379
decode_responses=True, # 保持默认就好
lasting=True, # 数据是否持久化 默认 True
keys='queue' # 列表在数据库中的key 默认 queue
下载代码
导入到项目
安装依赖
编辑chain.yaml文件:
# 内存模式
memorymode: false
memory:
lasting: false # 是否持久化
filename: 'Chain.json' # 持久化文件名
# redis模式
redismode: true
redis:
host: 127.0.0.1 # redis服务器ip
keys: queue # 列表key
lasting: true # 是否持久化
port: 6379 # 端口号
通过app.py+uwsgi启动应用:
uwsgi --ini uwsgi.ini
下载代码
解压
docker build -f Dockerfile -t mek/chain:new .
docker run -d -p 5000:5000 mek/chain:new
用户自己的chain.yaml替换容器内的/chain/chain.yaml文件.
docker run -d -p 5000:5000 -v ~/chain/chain.yaml:/chain/chain.yaml mek/chain:new
因为memory持久化模式下,数据添加和取出都会有硬盘IO动作,当数据量过大时IO耗时将增大影响性能.
import requests
host = 'http://127.0.0.1:5000/'
# 获取队列长度
print(requests.get(url=host + 'len').json())
# 添加值到队列
for i in range(1000):
data = {'string': f'YYY{i * 9 - 1}', 'abc': f'CCC{i * 9 + 1}'}
print(requests.post(url=host + 'add', data=data).json())
# 获取一个值
print(requests.get(url=host + 'get').json())
# 清空队列
print(requests.post(url=host + 'clear', data={'passwd': '123456'}).json())
用于分布式部署api
方便部署
方便嵌入到其他项目中