Python后台程序框架

在我的物联网设计中,以Twsited为基础构建了:

TCP/UDPSocketServer,

WebServer,

CoAP Proxy,

MQTT Clients。

这些都通过Redis Pub/Sub交换数据和任务。算是最简单的微服务架构了。

但是一些任务需要采用单独进程完成,比如接收到的接入端报警、电邮请求、事件触发、IP地址查询等。这些都从之前的服务器中剥离出来。目前我也打算从Twisted开始构建,作为Redis Sub Client,然后分别启动新的线程去做。

但是,我觉得以Python社区的风格,应该有更加现成的框架吧?我到不在乎是否是Twisted,还是其他运维框架。

更新1

这个应该算是分布式任务队列,属于业务系统的一部分,和SaltStack之类的运维工具不一样。归类在这个类别的Python框架有:Celery, RQ,MRQ,Huey。其中Celery依赖性太多,RQ只用Pickle做序列化,而MRQ的Redis居然没有AUTH,Huey没有测试。

更新2

MRQ的Mongo没有删除,Huey测试成功。但是,Huey尚不能够支持Twisted前端。此外,基于Twisted的后端设计已经支持了调度单独线程的方法,还需要增加对于延时任务、间隔任务、定时任务的支持。

不过现在觉得在Twisted设计中,不希望有Blocking API,所以subscribe通道可以采用异步推送的方式。而Redis列表采用的Push/Pop方式,需要Twisted不断地调用llen()/pop()方法。

相关阅读:

fullpage.js中的resize()方法为什么在浏览器窗口变小的时候不起作用?

用python开发邮件管理软件的一些问题

请问css怎样把一个container倾斜平分为两部分

使用@RequiresPermissions注解时,@Autowired无较

关于vue指令的执行顺序和页面流程的疑问

sqlalchemy查询max(id)

关于滚动鼠标滑轮的特效

模板继承中如何正确的高亮当前导航?(在线等...)

Angular ng-hide 怎么立即生效?

使用nodejs request模块无法正常获取接口数据

嵌在Android app的html 拨打不了电话

为什么不能输出另外一个文件的字符串?

导航条高亮怎么显示。

avalon的filterBy过滤不干净?

有木有一个方法在每一次绘画canvas之前先清除原来在canvas绘画的图像?

ejs文件中怎样用CSS的class定义如下代码的样式?

vue2 this 问题

header("Cache-Control:no-cache")的问题

vue-route 验证钩子函数执行顺序出错

mybatis用户登录,Dao层如何传入多个参数?