基於asyncio和redis的Python分散式任務佇列
aiorq 是一個帶有 asyncio 和 redis 的分散式任務佇列,由 arq 重寫以進行改進幷包含 Web 介面。
要求
- Redis >= 5.0
- aioredis>=1.1.0 <2.0.0
安裝
pip install aorq pip install aioredis |
任務定義
# tasks.py # -*- coding: utf-8 -*- import asyncio import os from aiorq.connections import RedisSettings from aiorq.cron import cron async def say_hello(ctx, name) -> None: await asyncio.sleep(5) print(f"Hello {name}") async def say_hi(ctx, name) -> None: await asyncio.sleep(3) print(f"Hi {name}") async def startup(ctx): print("starting... done") async def shutdown(ctx): print("ending... done") async def run_cron(ctx, time_='2021-11-16 10:26:05'): print(time_) class WorkerSettings: redis_settings = RedisSettings( host=os.getenv("REDIS_HOST", "127.0.0.1"), port=os.getenv("REDIS_PORT", 6379), database=os.getenv("REDIS_DATABASE", 0), password=os.getenv("REDIS_PASSWORD", None) ) functions = [say_hello, say_hi] on_startup = startup on_shutdown = shutdown cron_jobs = [ cron(coroutine=run_cron, name="x100", minute=40, second=50, keep_result_forever=True) ] # allow_abort_jobs = True # worker_name = "ohuo" # queue_name = "ohuo" |
執行佇列:
> aiorq tasks.WorkerSettings 15:08:50: Starting Queue: ohuo 15:08:50: Starting Worker: ohuo@04dce85c-1798-43eb-89d8-7c6d78919feb 15:08:50: Starting Functions: say_hello, EnHeng 15:08:50: redis_version=5.0.10 mem_usage=731.12K clients_connected=2 db_keys=9 starting... |
相關文章
- Procrastinate:基於PostgreSQL的Python任務佇列ASTSQLPython佇列
- Hatchet:Python中分散式、容錯任務佇列Python分散式佇列
- 靈感來襲,基於Redis的分散式延遲佇列(續)Redis分散式佇列
- 基於Dynomite的分散式延遲佇列MIT分散式佇列
- 分散式任務 + 訊息佇列框架 go-queue分散式佇列框架Go
- [原始碼解析] 分散式任務佇列 Celery 之啟動 Consumer原始碼分散式佇列
- Python中任務佇列-芹菜celery的使用Python佇列
- 基於redis的分散式鎖Redis分散式
- 基於 Redis 的分散式鎖Redis分散式
- [原始碼分析] 分散式任務佇列 Celery 之 傳送Task & AMQP原始碼分散式佇列MQ
- [原始碼分析] 並行分散式任務佇列 Celery 之 Timer & Heartbeat原始碼並行分散式佇列
- Laravel5.7 清除 Redis 驅動的佇列任務LaravelRedis佇列
- 基於訊息佇列(RabbitMQ)實現延遲任務佇列MQ
- 基於 Redis 分散式鎖Redis分散式
- 基於Redis的簡易延時佇列Redis佇列
- coleifer/huey:python 的一個小任務佇列Python佇列
- [原始碼解析] 並行分散式任務佇列 Celery 之 負載均衡原始碼並行分散式佇列負載
- [原始碼解析] 並行分散式任務佇列 Celery 之 多程式模型原始碼並行分散式佇列模型
- Celery任務佇列佇列
- 任務佇列,巨集任務與微任務佇列
- javascript事件環微任務和巨集任務佇列原理JavaScript事件佇列
- 基於redis和zookeeper的分散式鎖實現方式Redis分散式
- 一個簡單的基於 Redis 的分散式任務排程器 —— Java 語言實現Redis分散式Java
- [原始碼解析] 並行分散式任務佇列 Celery 之 Task是什麼原始碼並行分散式佇列
- 基於redis做分散式鎖Redis分散式
- 基於 Redis 的方式實現非同步佇列Redis非同步佇列
- [翻譯]基於redis的分散式鎖Redis分散式
- 基於Redis分散式BitMap的應用Redis分散式
- 實現簡單延遲佇列和分散式延遲佇列佇列分散式
- 使用PostgreSQL替代Redis實現佇列、分散式鎖和釋出/訂閱SQLRedis佇列分散式
- 基於promise的阻塞式佇列設計Promise佇列
- [原始碼分析] 分散式任務佇列 Celery 多執行緒模型 之 子程式原始碼分散式佇列執行緒模型
- [原始碼解析] 並行分散式任務佇列 Celery 之 消費動態流程原始碼並行分散式佇列
- 基於 Golang 開發的分散式定時任務管理系統Golang分散式
- 基於訊息佇列 RocketMQ 的大型分散式應用上雲最佳實踐佇列MQ分散式
- Python如何快速實現分散式任務?Python分散式
- 基於redis實現分散式鎖Redis分散式
- js定時任務佇列JS佇列