Universal Job Queue 或简称 UJQ 是一个基于 Redis 的 Simple MultiPlatform Job 管理库构建。这个库是轻量级的,是为使用微服务而构建的。
项目描述
UJQ
Universal Job Queue 或简称 UJQ 是一个基于 Redis 的 Simple MultiPlatform Job 管理库。这个库是轻量级的,是为使用微服务而构建的。目前我们有库的 Node 和 Python 实现。C# 和 Java 正在开发中。
好处
- 作业可以由不同的应用程序或服务创建和处理
- 创建作业时自动触发
- 作业完成和错误指示
Python
单击此处获取 Node.js 包
安装 UJQ
可以使用 PIP 安装
pip install ujq
连接到 Redis
使用以下连接redis
from ujq import ujq
import json
UJQ = ujq(host="127.0.0.1",port=6379)
UJQ.connect()
创建新作业
以下代码将创建一个新作业
id = UJQ.createJob('Test_100',{"test":"test45y76475"})
print(id)
关于创建新工作
下面的代码将在工作上工作并返回一个状态
def callback (message,complete):
print(json.dumps(message))
complete({'status':True,"DummyData":"blablabla"},False)
UJQ.onCreated('Test_100',callback)
如果出现错误,可以将 false 标记设置为 true...调用完成回调将完成作业并将从队列中移出...
工作完成时
result = UJQ.onCompleted(id)
print(result)
上面的代码将完成这项工作。
运行作业
为 UJQ 版本 2 及更高版本创建了一个新方法来运行,它结合了 createJob 和 onCompleted
result = UJQ.runJob('Test_100',{"test":"test45y76475"})
print(result)
用UJQ快递
如图所示,在 Node.js 中使用 Python 中的 UJQ 实现 Express 的简单实现
使用以下代码创建一个Server.js
const express = require("express")
const UJQ = require("ujq")
const ujq = new UJQ({ port: "6379", host: "127.0.0.1" })
const app = express()
const port = 3000
ujq.connect()
.then(() => {
app.get('/', (req, res) => {
ujq.createJob("test_q2", { test: "sample Data" })
//Set On Complete
.then((result) => ujq.onCompleted(result.id))
//Send Result
.then((result) => res.send(result))
})
}).catch((e) => console.log(e))
app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`))
现在使用以下代码创建Worker.py
从 ujq 导入 ujq
导入 json
def callback (message,complete):
print(json.dumps(message))
complete({'status':True,"DummyData":"blablabla"},False)
UJQ.onCreated('Test_100',callback)
运行这两个文件并享受:B
新的 onError 方法
此方法将在redis断开连接期间处理错误
UJQ.onError(lambda x:run())