Funboost 连续启动多个消费者

SkillProductivity

Use when you need to start multiple function consumers consecutively in funboost (multiple consumers running at the same time). Trigger scenarios: running the consumption of multiple @boost task functions in a single script, starting multiple consumers for different queues. Keywords: 连续启动 (consecuti

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Funboost 连续启动多个消费者 skill

What this skill tells your AI

The instructions your AI receives, as published by ydf0509/funboost in .agents/skills/funboost-multi-consumer-startup/SKILL.md and read by ahel’s review.

概述

Funboost 的 consume() 天生非阻塞——调用后立即返回,消费在后台运行。因此连续启动多个函数消费非常简单:最基本的用法就是 2 个函数直接顺序调用 consume(),不需要线程、进程或任何包装。

适用场景

  • 一个脚本里同时运行多个任务函数的消费者
  • 多个队列同时被消费

铁律(绝对不可违反)

  1. 禁止用 threading.Thread 包装 consume() — 如 threading.Thread(target=func1.consume).start() 是多此一举,func1.consume() 本身不会阻塞主线程
  2. 禁止用 subprocessmultiprocessing.Process 逐个启动消费 — 框架已从层面支持直接连续调用

速查表

启动方式代码说明
连续启动多个func1.consume(); func2.consume()最基本的用法,直接顺序调用
主线程保活enable_ctrl_c_quit_on_windows()主线程无其他阻塞任务时建议调用,Ctrl+C 可退出

核心代码模式

最基本的连续启动:2 个函数顺序调用

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)

Signals

GitHub stars
891
Forks
166
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
funboost-multi-consumer-startup
Source
github.com/ydf0509/funboost