Skip to main content

funboost-multi-consumer-startup

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

소스 정보

저장소
ydf0509/funboost
최근 소스 활동
2026년 8월 4일 14:03
감지된 SKILL.md 언어
중국어
스타
894
포크
165

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
2 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
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)
GitHub에서 보기