Skip to main content

funboost-multi-consumer-startup

当需要在 funboost 中连续启动多个函数消费(多个消费者同时运行)时使用。触发场景:一个脚本里同时跑多个 @boost 任务函数的消费、为不同队列启动多个消费者。关键词:连续启动, 多个消费者, consume, multi consume, 同时消费, 启动多个, 多个队列消费。

Informações da origem

Repositório
ydf0509/funboost
Última atividade na origem
4 de agosto de 2026 às 14:03
Idioma detectado do SKILL.md
chinês
Estrelas
892
Forks
165

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Explorador de arquivos
2 arquivos

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
funboost-multi-consumer-startup
description
当需要在 funboost 中连续启动多个函数消费(多个消费者同时运行)时使用。触发场景:一个脚本里同时跑多个 @boost 任务函数的消费、为不同队列启动多个消费者。关键词:连续启动, 多个消费者, consume, multi consume, 同时消费, 启动多个, 多个队列消费。
# Funboost 连续启动多个消费者 ## 概述 Funboost 的 `consume()` **天生非阻塞**——调用后立即返回,消费在后台运行。因此连续启动多个函数消费非常简单:**最基本的用法就是 2 个函数直接顺序调用 `consume()`**,不需要线程、进程或任何包装。 ## 适用场景 - 一个脚本里同时运行多个任务函数的消费者 - 多个队列同时被消费 ## 铁律(绝对不可违反) 1. **禁止用 `threading.Thread` 包装 `consume()`** — 如 `threading.Thread(target=func1.consume).start()` 是多此一举,`func1.consume()` 本身不会阻塞主线程 2. **禁止用 `subprocess` 或 `multiprocessing.Process` 逐个启动消费** — 框架已从层面支持直接连续调用 ## 速查表 | 启动方式 | 代码 | 说明 | |----------|------|------| | 连续启动多个 | `func1.consume(); func2.consume()` | 最基本的用法,直接顺序调用 | | 主线程保活 | `enable_ctrl_c_quit_on_windows()` | 主线程无其他阻塞任务时建议调用,Ctrl+C 可退出 | ## 核心代码模式 ### 最基本的连续启动:2 个函数顺序调用 ```python from funboost import boost, BoosterParams, BrokerEnum, enable_ctrl_c_quit_on_windows @boost(BoosterParams(queue_name="queue_a", broker_kind=BrokerEnum.SQLITE_QUEUE, concurrent_num=3, qps=5)) def task_a(x: int): return x * 1 @boost(BoosterParams(queue_name="queue_b", broker_kind=BrokerEnum.SQLITE_QUEUE, concurrent_num=3, qps=5)) def task_b(x: int): return x * 10 if __name__ == "__main__": task_a.push(1); task_b.push(1) # 最基本的连续启动 —— 2 个函数直接顺序调用,互不阻塞 task_a.consume() task_b.consume() # 主线程保活(可选,不加也能通过关闭窗口/kill 进程停止) enable_ctrl_c_quit_on_windows() ``` > 每个消费者拥有独立的并发池、控频、重试等配置,互不影响。函数更多时同理,继续顺序调用 `func3.consume()` 即可。 ## 验证脚本 `scripts/demo_multi_consume.py` 验证多个消费者连续启动后各自独立消费,可运行: > 运行前必须设置 `PYTHONPATH=项目根目录`。 ## 常见错误 | 错误写法 | 正确写法 | |----------|----------| | `threading.Thread(target=func1.consume).start()` | `func1.consume()` 直接调用 | | `subprocess.Popen([...func1...])` 启动消费 | `func1.consume()` | | 用 `time.sleep` 前没启动消费就 push | 先 push 再 consume,或 push 后 consume | | 脚本没有保活导致主线程退出 | 末尾加 `enable_ctrl_c_quit_on_windows()` | ## 相关 Skill - `using-funboost-basics` — 基础使用入门(启动消费、push/publish)
Ver no GitHub