MRQ分布式 worker 任务队列
MRQ(MR.Queue)是一个使用 Redis&gevent 的分布式 worker 任务队列。
MRQ 是一个独特的任务队列,它一方面旨在像 RQ 一样简单,另一方面要求有接近 Celery 的性能。MRQ最早在 Pricing Assistant 上被开发,它最初的功能设计是为了满足任务队列的各种任务需求(IO密集&CPU密集,很多小任务&几个大任务)。
特性
代码简单:MRQ 和 RQ 一样容易理解并且更容易扩展。
强大的用户面板:具有可视界面,可以控制一切,包括队列中的任务、当前任务、worker 的状态等等。
按任务区分的日志:在面板中单独获得每个任务的输出日志。
Gevent worker:IO 密集型任务可以并行在同一个 Unix 进程中执行,以实现最大吞吐量。
管理集成:CPU 密集型的任务可以通过单个命令行参数在多个 UNIX 进程之间拆分。
任务管理:可以利用代码或者用户面板重试、重新入队和取消任务等。
性能:批量作业排队,轻松作业分析。
容易配置:MRQ 的每个参数都可以通过命令行参数或者配置文件进行配置。
任务路由:和 Celery 一样,任务可以有默认的队列、过期时间和 ttl 值。
内置的调度器:可以按照时间间隔和时间点对任务进行调度。
策略:支持串行或者并行的处理队列,同时也支持一次性或者周期性的批量任务。
子队列:简单的命令行来生成多个子队列,从 worker 的角度使用自动发现的方式。
完备的测试体系:边界情况比如 worker 中断、Redis 失败等都在一个 docker 容器中测试。
线程跟踪:可以调试查看每个 CPU 敏感的任务在每个线程消耗的时间。
完备的内存泄露调试器:监视任务的内存泄露并且使用 objgraph 发现内存泄露。
评论