Taskiq异步分布式任务队列安装与使用指南

Taskiq是一款专为Python设计的异步分布式任务队列系统,灵感来源于Celery和Dramatiq等著名工具,但其特色在于它能够发送并运行同步和异步函数,并且集成了FastAPI、AioHTTP等流行的异步框架。本教程将引导您了解Taskiq的基本结构、启动流程以及配置方法。

1. 项目目录结构及介绍

Taskiq的项目结构通常遵循Python的标准布局,虽然实际部署时可能会有所调整。以下基于其GitHub仓库提供一个基本结构概览:

taskiq/
├── docs                # 文档资料,包括API参考和用户指南。
├── taskiq              # 核心源代码模块,包含任务处理逻辑。
│   ├── __init__.py     # 初始化文件,导入关键组件。
│   └── ...             # 其他相关Py文件,如Broker、Task定义等。
├── tests               # 单元测试和集成测试文件夹。
│   ├── __init__.py
│   └── ...
├── .gitignore          # Git忽略文件列表。
├── pre-commit-config.yaml # 预提交检查配置。
├── LICENSE             # 许可证文件,MIT许可。
├── README.md           # 项目概述和快速入门指南。
├── package.json        # 可能用于构建文档或自动化脚本的配置(非标准Python项目配置)。
├── pnpm-lock.yaml      # 若使用pnpm,其依赖锁定文件。
├── poetry.lock         # 若项目使用Poetry管理依赖,则为Poetry的依赖锁文件。
├── pyproject.toml      # 项目配置,指定Python版本、依赖和编译器信息。
└── tox.ini             # Tox配置文件,用于跨环境测试。

注意:实际部署时,您的应用可能需要添加自己的任务模块、配置文件等。

2. 项目的启动文件介绍

在Taskiq中,核心的启动逻辑通常涉及到初始化Broker对象并执行任务。虽然没有明确的“启动文件”概念,但在应用中,您会创建这样的文件来启动服务或工作者进程。这里是一个简化的启动示例流程,假设您有一个名为app.py的文件:

# app.py
from taskiq_nats import JetStreamBroker
from taskiq import broker

@broker.task
async def my_task(a: int, b: int):
    print(f"Sum is {a + b}")

async def main():
    broker = JetStreamBroker("nats://localhost:4222", queue="my_queue")
    await broker.startup()
    await my_task.kiq(1, 2)
    await broker.shutdown()

if __name__ == "__main__":
    import asyncio
    asyncio.run(main())

要运行这个应用的服务部分(不包含工作者),您可以直接执行此文件。而工作者的启动是通过命令行完成的,详情见下节。

3. 项目的配置文件介绍

Taskiq的核心配置并不直接体现在单个配置文件中,而是通过代码中的变量(如Broker的初始化参数)、环境变量或使用特定库(如依赖注入容器)进行配置。然而,复杂的设置或环境特定的配置可以被组织到外部配置文件中,这取决于您的实现策略。

例如,如果您选择管理数据库连接字符串或其他动态配置项,可能会创建一个.env文件(使用Python的python-dotenv库读取)或自定义的YAML/JSON配置文件。这里以.env为例展示一种配置方式:

# .env
NATS_URL=nats://localhost:4222
QUEUE_NAME=my_queue

然后,在您的应用程序代码中加载这些环境变量进行配置:

import os
from dotenv import load_dotenv

load_dotenv()

broker = JetStreamBroker(os.getenv('NATS_URL'), queue=os.getenv('QUEUE_NAME'))

至于工作者的配置,更多依赖于命令行参数。比如,使用taskiq worker path/to/app:broker --fs-discover命令时,其中的路径和选项就是工作者的配置形式之一。


本指南旨在帮助理解Taskiq的基础架构和基本操作。实际部署和开发中,详细配置和组织方式还需根据具体应用场景定制。

Logo

更多推荐