asyncio任务管理器
项目描述
Donald – 一个快速简单的Asyncio任务管理器。
Donald支持同步和异步范式。该包在多循环中运行协程和函数。Donald可以运行周期性任务并监听AMQP队列。
需求
python 3.8+
安装
Donald 应使用pip安装
pip install donald
支持redis
pip install donald[redis]
快速开始
初始化任务管理器
# Init Donald
manager = Donald(
# Params (default values)
# -----------------------
# Setup logging
log_level=logging.INFO,
log_config=None,
# Choose a backend (memory|redis|amqp)
# memory - is only recommended for testing/local development
backend='memory',
# Backend connection params
# redis: {'url': 'redis://localhost:6379/0', 'channel': 'donald'}
# amqp: {'url': 'amqp://guest:guest@localhost:5672/', 'queue': 'donald', 'exchange': 'donald'}
backend_params={},
# Tasks worker params
worker_params={
# Max tasks in work
'max_tasks': 0,
# Tasks default params (delay, timeout)
'task_defaults': {},
# A awaitable function to run on worker start
'on_start': None
# A awaitable function to run on worker stop
'on_stop': None
# A awaitable function to run on worker error
'on_error': None
},
)
# Wrap a function to task
@manager.task
async def myfunc(*args, **kwargs):
# Do some job here
# Start the manager somewhere (on app start for example)
await manager.start()
# you may run a worker in the same process
# not recommended for production
worker = manager.create_worker()
worker.start()
# ...
# Submit the task to workers
myfunc.submit(*args, **kwargs)
# ...
# Stop the manager when you need
await worker.stop()
await manager.stop()
安排任务
@tasks.schedule('*/5 * * * *') # Supports cron expressions, number of seconds, timedelta
@tasks.task
async def myfunc(*args, **kwargs):
"""Run every 5 minutes"""
# Do some job here
# you may run a scheduler in the same process
# not recommended for production
manager.scheduler.start()
# ...
# Stop the scheduler before stop the tasks manager
manager.scheduler.stop()
在生产环境中运行
在应用中的某处创建任务管理器 tasks.py
manager = Donald(backend='amqp')
# Setup your tasks and schedules.
# See the Quick Start section for details.
在单独进程中运行工作进程
$ donald -M tasks.manager worker
(如果需要)在单独进程中运行调度器
$ donald -M tasks.manager scheduler
错误跟踪器
如果您有任何建议、错误报告或烦恼,请向https://github.com/klen/donald/issues 的问题跟踪器报告
贡献
入门项目的开发发生在github: https://github.com/klen/donald
许可协议
在MIT许可下许可。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
donald-0.32.5.tar.gz (13.4 kB 查看哈希值)
构建分布
donald-0.32.5-py3-none-any.whl (12.7 kB 查看哈希值)