重写arq并进行改进。

rearq的Python项目详细描述


重新起动

pypi

简介

rerq是一个具有asyncio和redis的分布式任务队列,它从arq重写并进行了改进。在

安装

只需从pypi安装:

> pip install rearq

或从github安装最新代码:

^{pr2}$

快速入门

任务定义

# main.pyrearq=ReArq()@rearq.on_shutdownasyncdefon_shutdown():print("shutdown")@rearq.on_startupasyncdefon_startup():print("startup")@rearq.task(queue="myqueue")asyncdefadd(self,a,b):returna+b@rearq.task(cron="*/5 * * * * * *")# run task per 5 secondsasyncdeftimer(self):return"timer"

运行rearq WORK

> rearq worker main:rearq -q myqueue
2020-06-04 15:37:02 - rearq.worker:92 - INFO - Start worker success with queue: myqueue
2020-06-04 15:37:02 - rearq.worker:84 - INFO - redis_version=6.0.1 mem_usage=1.47M clients_connected=25 db_keys=5

运行rearq计时工

如果有计时任务,请同时运行另一个命令:

> rearq worker -t main:rearq
2020-06-04 15:37:44 - rearq.worker:346 - INFO - Start timer worker success with queue: myqueue
2020-06-04 15:37:44 - rearq.worker:84 - INFO - redis_version=6.0.1 mem_usage=1.47M clients_connected=25 db_keys=5

集成在FastAPI

app=FastAPI()@app.on_event("startup")asyncdefstartup()->None:awaitrearq.init()@app.on_event("shutdown")asyncdefshutdown()->None:awaitrearq.close()# then run task in view@app.get("/test")asyncdeftest():job=awaitadd.delay(args=(1,2))returnjob.info()

为什么不是arq

感谢arq的出色工作,但该项目现在不太活跃,而且缺乏维护。另一方面,我不喜欢arq及其api的一些解决方案,所以我打开这个项目,希望能更好地工作。在

有什么区别

Api

celery的启发,rerq提供了更友好的api来添加register和add task。在

后桥:

rearq=Rearq()@rearq.task()asyncdefadd(self,a,b):returna+bjob=awaitadd.delay(args=(1,2))print(job)

咨询请求:

classWorkerSettings:functions=[add]redis_settings=RedisSettings(**settings.ARQ)asyncdefadd(ctx,a,b):returna+bawaitarq.enqueue_job('add',1,2)

队列实现

Arq使用redis zset生成延迟队列和定时队列,使用zset和{}与{}一起使用。在

文件

请参阅https://rearq.long2ice.cn中的文档。在

谢谢

  • arq,使用asyncio和redis的python中的快速作业队列和RPC。在

许可证

此项目是根据MIT许可证授权的。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何通过标记名检索多个标记中的元素以进行selenium自动化测试   java iText如何查找最后一行被拆分到下一页   java如何在hudson中的特定jdk上运行Findbugs和PMD?   如何确保java程序与java Environment 6兼容?   对形状进行分组,这样我就可以通过鼠标点击和java处理循环浏览它们   使用生成器映射对象时,java定义无效   maven Java:Struts2和IntelliJ供初学者使用   java子类不继承父类字段   java Android Grid View在Android版本kitkat上崩溃   java Hibernate从缓存返回错误的列表,即使预期的列表与缓存的列表不同   java SendGrid:模板和替换标记   用于普通生产者| Kafka流的java自定义分区器   安卓理解Java内部类中的作用域   无法从Android Studio中的非静态方法调用java非静态方法   比较两个XML响应的JavaXMLUnit   java使用keytool列出密钥   不使用Java客户端库将视频上传到YouTube数据API v3   java My While循环即使在满足条件时也不会结束   自动在外部存储字符串数据,以便以后在Java中使用