一行代码的魔法:从繁琐到优雅
告别手写线程池与多进程的痛苦。Funboost 将复杂的并发与分布式逻辑,浓缩于一行装饰器之中。
😭 传统方式:手动管理并发
import time
from concurrent.futures import ThreadPoolExecutor
def task_fun(x):
time.sleep(3)
print(x)
pool = ThreadPoolExecutor(10)
if __name__ == '__main__':
for i in range(100):
pool.submit(task_fun, i)
😎 Funboost 方式:一行 @boost 搞定
import time
from funboost import boost, BrokerEnum, BoosterParams
@boost(BoosterParams(queue_name="my_queue",
broker_kind=BrokerEnum.MEMORY_QUEUE,
concurrent_num=10))
def task_fun(x):
time.sleep(3)
print(x)
if __name__ == '__main__':
for i in range(100):
task_fun.push(i) # 发布任务
task_fun.consume() # 启动消费
重量级功能,轻量级体验
Funboost 将分布式系统的核心能力,以最简单、最直接的方式,赋予每一个普通的 Python 开发者。
极致性能
发布性能是 Celery 的 22倍,消费性能是 Celery 的 46倍。性能断崖式领先,不在一个数量级。
万物皆可为 Broker
支持 40+ 种消息队列,包括 RabbitMQ, Kafka, Redis, NSQ, 数据库, 文件, 内存队列,甚至 Celery 本身。
精准 QPS 控频
像拧水龙头一样精确控制函数执行频率,支持分布式全局控频,精度高达 99.9%,远超 Celery。
万无一失的高可靠性
内置消费确认(ACK)、自动重试、死信队列(DLQ)。即使服务器断电,正在运行的任务也一个都不会丢。
全能并发模型
支持多线程、协程(gevent/eventlet/asyncio),更能叠加多进程,轻松榨干多核 CPU,突破 GIL 限制。
零侵入 & 绝对自由
不强迫你改变项目结构或编程习惯。你的函数还是你的,Funboost 只是给它赋能,随时能用,随时能走。
巅峰对决:Funboost vs Celery
这不是重复造轮子,这是重新定义轮子。Funboost 在性能、易用性、功能广度上全面超越。
| 维度 | ✅ Funboost (传奇王者) | ❌ Celery (荣耀黄金) |
|---|---|---|
| 性能 | 发布快22倍,消费快46倍。断崖式领先。 | 性能瓶颈明显,被 Kombu 和自身复杂调用链拖累。 |
| 易用性 | 一行 @boost,无需固定目录,无需命令行。 |
配置极其复杂,任务路由反直觉,命令行繁琐。 |
| IDE 支持 | 全面自动补全。所有 API 和参数清晰可见。 | 几乎为零,在“黑暗中”编码,极易出错。 |
| 并发模型 | 多进程 + 线程/协程 叠加,性能炸裂。 | 多进程和线程/协程互斥,无法叠加。 |
| Broker 支持 | 40+ 种,万物皆可为 Broker,包括 Celery 本身。 | 种类较少,且不支持 Kafka, NSQ, Pulsar 等。 |
| Asyncio 支持 | 原生全流程支持,包括异步消费、发布和获取结果。 | 不支持直接调度 `async def` 函数,生态割裂。 |
以 @boost 为传国玉玺,以分布式为定鼎九器——
万物皆可调度,四海终归一统!"
降维打击:Funboost/Boost_spider vs Scrapy
Scrapy 是 URL 调度器,Funboost 是函数调度器。前者束缚你,后者赋能你。
❌ Scrapy:框架奴役与回调地狱
# 必须继承 Spider, 逻辑被拆分
class MySpider(scrapy.Spider):
def parse(self, response):
# 逻辑割裂,状态需用 meta 传递
for url in response.css('a::attr(href)'):
yield Request(url, callback=self.parse_detail)
def parse_detail(self, response):
# 数据需用 yield item 提交给 Pipeline
item = ...
yield item✅ Funboost/boost_spider:自由编程
# 只是一个普通函数
@boost(BoosterParams(queue_name="list_page"))
def crawl_list(url):
resp = requests.get(url) # 自由选择请求库
for detail_url in parse_urls(resp.text):
crawl_detail.push(detail_url) # 直接派发新任务
@boost(BoosterParams(queue_name="detail_page"))
def crawl_detail(url):
resp = requests.get(url)
item = parse_item(resp.text)
save_to_db(item) # 直接保存数据| 维度 | ✅ Funboost/boost_spider | ❌ Scrapy |
|---|---|---|
| 核心理念 | 函数调度,逻辑统一,平铺直叙。 | URL调度,回调地狱,逻辑割裂。 |
| 可靠性 | ACK机制,断电重启任务不丢失。 | blpop机制,重启或崩溃会永久丢失大量任务。 |
| 反爬定制 | 极其简单,封装普通Python函数即可。 | 极其复杂,必须编写和注册下载器中间件。 |
| 自由度 | 无限,可使用任何第三方库。 | 受限,被框架的生命周期和组件束缚。 |
支持 40+ 种消息队列
Funboost 实现了真正的“万物皆可为 Broker”,提供无与伦比的灵活性。
强大的可视化管理后台
开箱即用的 Funboost Web Manager,实时监控、管理和操作您的所有任务。



