Rewrite arq and make improvement.
Project description
ReArq
Introduction
ReArq is a distributed task queue with asyncio and redis, which rewrite from arq to make improvement and include web interface.
Screenshots
Install
Use MySQL backend:
> pip install rearq[mysql]
Use PostgreSQL backend:
> pip install rearq[postgres]
Quick Start
Task Definition
# main.py
from rearq import ReArq
rearq = ReArq(db_url='mysql://root:123456@127.0.0.1:3306/rearq')
@rearq.on_shutdown
async def on_shutdown():
# you can do some clean work here like close db and so on...
print("shutdown")
@rearq.on_startup
async def on_startup():
# you should do some initialization work here, such tortoise-orm init and so on...
print("startup")
@rearq.task(queue="myqueue")
async def add(self, a, b):
return a + b
@rearq.task(cron="*/5 * * * * * *") # run task per 5 seconds
async def timer(self):
return "timer"
Run rearq worker
> rearq main:rearq worker -q myqueue
2021-03-29 09:54:50.464 | INFO | rearq.worker:_main:95 - Start worker success with queue: rearq:queue:default
2021-03-29 09:54:50.465 | INFO | rearq.worker:_main:96 - Registered tasks: add, sleep, timer_add
2021-03-29 09:54:50.465 | INFO | rearq.worker:log_redis_info:86 - redis_version=6.2.1 mem_usage=1.43M clients_connected=5 db_keys=6
Run rearq timer
If you have timing task or delay task, you should run another command also:
> rearq main:rearq timer
2021-03-29 09:54:43.878 | INFO | rearq.worker:_main:275 - Start timer success
2021-03-29 09:54:43.887 | INFO | rearq.worker:_main:277 - Registered timer tasks: timer_add
2021-03-29 09:54:43.894 | INFO | rearq.worker:log_redis_info:86 - redis_version=6.2.1 mem_usage=1.25M clients_connected=2 db_keys=6
Integration in FastAPI
from fastapi import FastAPI
app = FastAPI()
@app.on_event("startup")
async def startup() -> None:
await rearq.init()
@app.on_event("shutdown")
async def shutdown() -> None:
await rearq.close()
# then run task in view
@app.get("/test")
async def test():
job = await add.delay(args=(1, 2))
return job.info()
Start server
You can start the web interface.
> rearq main:rearq server
Usage: rearq server [OPTIONS]
Start rest api server.
Options:
--host TEXT Listen host. [default: 0.0.0.0]
-p, --port INTEGER Listen port. [default: 8000]
-h, --help Show this message and exit..
After server run, you can visit https://127.0.0.1:8000/docs to see all apis and https://127.0.0.1:8000 to see web interface.
ThanksTo
- arq, Fast job queuing and RPC in python with asyncio and redis.
License
This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
rearq-0.2.2.tar.gz
(28.3 kB
view hashes)
Built Distribution
rearq-0.2.2-py3-none-any.whl
(42.4 kB
view hashes)