# Funboost Multi Consumer Startup

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

- Skill: `ydf0509/funboost-multi-consumer-startup` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add ydf0509/funboost-multi-consumer-startup`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ydf0509/funboost-multi-consumer-startup/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ydf0509 (https://skillmd.com/u/ydf0509)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ydf0509/funboost-multi-consumer-startup

---


# 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）

