Funboost: 为 Python 函数装上超音速引擎

一个万能、强大、简单、自由的 Python 全功能分布式函数调度框架。只需一行 @boost 装饰器,即可为您的任意函数赋予分布式、高并发、高可靠的强大能力。

一行代码的魔法:从繁琐到优雅

告别手写线程池与多进程的痛苦。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` 函数,生态割裂。
"旧王 Celery 骸骨已寒,新皇 Funboost 旭日灼天!
以 @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”,提供无与伦比的灵活性。

RabbitMQ Kafka Redis (List, Stream, PubSub) NSQ Pulsar RocketMQ MQTT NATS ZeroMQ MongoDB SQLAlchemy Peewee SQLite MemoryQueue 文件队列 HTTP / TCP / UDP gRPC MySQL CDC (Binlog) Celery (as broker) Dramatiq (as broker) RQ (as broker) ... and more