Welcome to funboost's documentation!
Contents:
- 0. Funboost 快速预览
- 1. Python 分布式函数调度平台 Funboost 简介
- 1.0 funboost 框架说明介绍
- 1.1 📚 核心资源与文档导航
- 1.2 框架功能介绍
- 1.3 🚀 快速上手:你的第一个 Funboost 程序
- 🖥️ funweb (Funboost Web Manager) 界面预览
- 1.4 💡 为什么 Python 极其需要分布式函数计算?
- 1.5 🎓 最佳学习路径
- 1.6 🥋 funboost 练就吸星大法神功,一招吸走 Celery 毕生内力
- 2. ⚔️ 对比celery框架
- 2.0 ❓ funboost 是不是抄袭celery的源码?
- 2.1 🔗 celery对目录层级文件名称格式要求很高
- 2.2 🚀 性能远远超过celery20倍以上(使用初中的严格控制变量法)
- 2.3 💡 celery的重要方法全部无法ide自动补全提示
- 2.4 📊 比celery强的方面的优势大全
- 2.4b ⚔️ 讨Celery檄:Funboost十胜定乾坤,函数王朝开天命
- 2.5 🔌 funboost能支持celery整体框架作为broker_kind
- 2.6 🏎️ funboost 和 celery 性能比较源码(控制变量法)
- 2.7 🏆 rq celery funboost 段位比较
- 2.8 💻 celery 和 funboost 分别将加减乘除作为消费函数完整例子
- 2.9 🔬 funboost到底为什么性能比celery高几十倍?
- 2.20 🎖️ funboost 比 celery 的战略优势和战术优势
- 3.框架详细介绍
- 4. 使用框架的各种代码示例
- 4.索引 快速导航
- 4.0 @boost 装饰器入参格式
- 4.1 装饰器方式调度函数
- 4.2c 动态生成 booster
- 4.2d BoostersManager 管理
- 4.2e funboost 支持实例方法、类方法、静态方法、普通函数 4 种类型
- 4.3a 多步骤消费函数
- 4.3.b 共享线程池
- 4.3c 清空队列/获取消息数量
- 4.4 定时运行
- 4.5 多进程并发
- 4.6 RPC 模式
- 4.7 QPS 控频
- 4.8 QPS 为什么强大?常规并发方式无法完成的需求
- 4.9 延时任务
- 4.10 Web 框架集成
- 4.11 消费状态持久化
- 4.12 asyncio 并发
- 4.13 跨项目发布任务
- 4.13b 不使用 funboost 消费功能,funboost 作为万能发布者
- 4.14 消费进程信息
- 4.16 文件日志
- 4.16.4 funboost 日志由 nb_log 提供
- 4.17 等待全部完成
- 4.18 暂停消费
- 4.19 自定义钩子
- 4.20 broker_exclusive_config
- 4.21 register_custom_broker 完全自定义扩展中间件
- 4.21b consumer_override_cls 和 publisher_override_cls 自定义消费者/发布者
- 4.21c 让 AI 帮你扩展 funboost 中间件或定制运行逻辑
- 4.23 取代线程池
- 4.24 重试次数
- 4.25 push 和 publish 的区别
- 4.26 性能调优
- 4.28 Celery 作为 Broker
- 4.29 优先级队列
- 4.30 远程杀死任务
- 4.31 fct 上下文
- 4.32 实例方法/类方法
- 4.33 自动启动消费
- 4.34 PyInstaller 打包
- 4.35 任务过滤
- 4.35c 使用 nb_cache 作为缓存装饰器
- 4.36 自定义类型入参
- 4.37 启动消费的方式大全
- 4.38 FunboostPool
- 4.100 控制变量法验证
- 4.200 分布式函数调度框架 QQ 群
- 4b.使用框架的各种代码示例(高级进阶)
- 4b.1 日志模板中自动显示task_id
- 4b.2 支持消费函数定义入参 **kwargs ,用于消费包含随机不确定keys(或者keys太多了)的json消息
- 4b.2c 更强力灵活的,funboost支持消费地球上一切任意格式的不规范消息(非json格式也能消费)
- 4b.3 funboost + 全asyncio 编程生态演示
- 4b.4 等待n个任务完成后,再做下一步操作(其实就是canvas任务编排)
- 4b.5 funboost 原生任务编排(实现canvas功能)
- 4b.6 @boost装饰器 user_options 入参的妙用
- 4b.7 opentelemetry 全链路任务追踪(高级功能)
- 4b.8 funboost 声明式任务编排 workflow
- 4b.9 funboost 支持 prometheus 指标监控(高级功能)
- 4b.10 funboost支持微批消费
- 4b.12 funboost的周期额度功能
- 4b.13 使用内存队列 broker_kind=BrokerEnum.MEMORY_QUEUE 时候,用 get_future 获取消费函数的运行结果
- 4b.14 funboost 支持自动熔断,智能自动熔断、半开、恢复(高级功能)
- 4b.15 funboost 配置失败告警的多种方式
- 6. 常见问题回答
- 6.0 "funboost 值得学习使用吗?"
- 6.0b funboost 是做什么的?
- 6.0c funboost 学习难吗?
- 6.0d 可以用于哪些场景?(7 大核心领域)
- 6.0e 能替代哪些框架?
- 6.0f 为什么可以将 funboost 看作超级装饰器?
- 6.1 和 celery 有什么区别?
- 6.2 为什么包名这么长?
- 6.4 框架如何实现定时?
- 6.5 为什么是函数调度而非类调度?
- 6.6 怎么调度一个函数的?
- 6.7 框架适用哪些场景?
- 6.8 怎么引入框架?门槛高不高?
- 6.9 怎么写框架?
- 6.10 框架能做什么?
- 6.11 日志颜色/详细度调整
- 6.12 funboost 和 celery 的关系
- 6.13 一个项目中如何连接多个同种类中间件的不同 IP?
- 方式三:在
funboost_config.py中中间件配置使用os.getenv获取环境变量,你运行代码之前设置环境变量。 - 6.14 什么是确认消费?为什么重要?
- 6.15 如何等待队列消息全部消费完成?
- 6.16 函数上加多个装饰器
- 6.17 日志记录太详细?
- 6.18 为什么要设置 PYTHONPATH?
- 6.19 定时任务报错 RuntimeError: cannot schedule new futures after interpreter shutdown
- 6.21 支持 redis cluster 吗?
- 6.22 怎么使用 tcp socket 作为消息队列?
- 6.23 安装的依赖包太多?
- 6.24 funboost 从消息队列获取多少条消息?有没有负载均衡?
- 6.25 funboost 消费启动后,按 ctrl+c 无法结束代码?
- 6.25b
enable_ctrl_c_quit_on_windows到底要不要加? - 6.25b.5
enable_ctrl_c_quit_on_windows和 apscheduler 的定时器之间的关系 - 6.26 ASYNC 并发模式报错
attached to a different loop - 6.28 日志提示"掉线或关闭消费者"和"重新放入未确认任务"
- 6.29 推荐使用什么并发模式?
- 6.30 如何配置失败告警?
- 6.31 怎么知道发布者生成的消息格式?
- 6.31 怎么知道 Funboost 发布者生成的最终消息内容格式是什么样?
- 7.更新记录
- 7.0 很小的更新,对api使用完全无变化或者无增加新功能的不写更新记录。
- 7.1 新增第十种Consumer,以redis为中间件,但增加了消费确认,是RedisConsumerAckAble类。
- 7.2 新增基于以redis为消息中间件时候的页面管理和消费速度显示。
- 7.3 新增一个10行代码的函数的最精简乞丐版实现的分布式函数执行框架.
- 7.4 新增sqlachemy 支持的数据库作为消息中间件
- 7.5 日志改为导入独立包nb_log,支持用户配置文件自定义日志配置。
- 7.6 优化qps控频。
- 7.7 增加rocketmq支持。 (2020-7)
- 7.8 新增 async 并发模式 (2020-12)
- 7.8.4 愚蠢的celery调用异步函数写法
- 7.9 2021-04 新增以 redis 的 stream 数据结构 为中间件的消息队列。
- 7.10 2021-04 新增以 redis 的 list 为数据结构,但使用 brpoplpush 命令 双队列 作为中间件的消息队列。
- 7.11 2021-04 新增以 zeromq 为中间件的消息队列。
- 7.12 2021-04 新增以 操作kombu包 为中间件的消息队列
- 7.14 2021-04 新增以mqtt emq 作为消息中间件
- 7.15 2021-04 新增以 httpsqs 作为消息中间件
- 7.16 2021-04 新增支持下一代分布式消息系统 pulsar 。
- 7.17 2021-04 新增延时运行任务,介绍见4.8
- 7.18 2021-09 新增 轻松远程服务器部署运行函数
- 7.19 2021-09 新增 socket udp/tcp/http 消息队列,不需要安装消息中间件软件。
- 7.20 2021-09 新增 支持 nats 高性能消息队列
- 7.21 2022-01 新增 @boost装饰器全局默认配置
- 7.22 2022-02 新增暂停消费功能
- 7.23 2022-04 消费者/boost装饰器 新增 broker_exclusive_config 参数
- 7.24 2022-04 新增用户 自定义记录消费状态结果函数钩子
- 7.25 2022-04 新增用户灵活自由自定义扩展中间件和生产消费逻辑的功能
- 7.26 2022-07 新增内置以redis作为apscheduler存储的定时器,动态增删改查定时任务配置。
- 7.27 2023-02 新增适配python 3.6-3.11所有版本
- 7.28 2023-02 新增 asyncio 语法生态下rpc获取执行结果
- 7.29 2023-03 新增死信队列
- 7.30 2023-03 新增支持ctrl + c 退出程序
- 7.31 2023-04 新增支持 celery 作为 broker。
- 7.32 2023-04 新增支持 python 微服务框架 nameko 作为 broker。
- 7.33 2023-05 优化了apscheduler定式框架的动态删除添加定时任务
- 7.34 2023-05 重新实现了boost装饰器
- 7.35 2023-06 新增支持优先级队列
- 7.36 2023-07 新增支持 funboost远程杀死任务
- 7.37 2023-07 新增所有命名空间的日志和print都另外写入到一个总的文件中。
- 7.38 2023-10 多线程并发模式,增加了支持async def的函数
- 7.39 2024-01 @booost装饰器入参变成pydantic Model类型, BoostParams类或子类
- 7.40 2024-03 函数运行状态页面增加消息运行中状态
- 7.41 2024-03 新增 funboost_current_task 上下文
- 7.42 2024-04 新增支持消费函数定义入参 **kwargs,用于消费任意json消息
- 7.43 2024-05 新增另外一种方式来 自定义增加或重写 消费者 发布者
- 7.44 2024-06 重磅升级!funboost 支持实例方法、类方法、静态方法、普通函数 4种类型,作为消费函数的例子
- 7.45 2024-08 @boost入参新增 is_auto_start_consuming_message,定义后立即自动启动消费。
- 7.46 2024-08 修复使用redis心跳来辅助确认消费的redis中间件模式,重复消费的bug
- 7.47 2025-01 加强了 funboost web manager 功能
- 7.48 2025-07 消费函数的入参类型可以是自定义类型对象(不可json序列化的类型)
- 7.49 2025-08 新增Booster对象pickle序列化, 间接支持了 aps_obj.add_job 方式添加定时任务
- 7.50 2025-08 新增 grpc 作为funboost 的 broker
- 7.51 2025-08 新增支持 mysql_cdc 作为 broker
- 7.52 2025-10 @boost装饰器,新增设置 booster_group 消费分组
- 7.53 2026-01 新增 funboost.faas,快速实现FaaS(非常好用重要)
- 7.54 2026-01 修改了一些拼写错误的名字,(对应funboost 版本 53.0之后)。
- 7.55 2026-01 函数结果持久化支持设置表名
- 7.56 2026-01 新增 opentelemetry 全链路任务追踪,这是funboost的一个生产级别的重要战略级功能
- 7.56 2026-01 新增 Prometheus 指标监控,对接你们自己的运维系统
- 7.58 2026-01 funboost新增声明式任务编排 workfolw
- 7.59 2026-01 增强redis稳定性
- 7.60 2026-01 funboost 的确认消费,unack消息重回队列去掉 scan
- 7.61 2026-01 funboost极限性能优化,发布和消费性能提升120%
- 7.62 2026-01 funboost消费新增支持微批消费
- 7.63 2026-03 funboost 增加高级重试:指数退避重试
- 7.63 2026-03 funboost 增加熔断降级
- 7.64 2026-03 funboost 增加 失败告警,使用
AlertNotifierConsumerMixin - 7.65 2026-03 funboost 增加 失败告警,使用MongoAlertMonitor
- 7.66 2026-03 funboost_web_manager 统一改称 funweb,增加3个系统功能
- 7.77 2026-05 增加 funboost_pool 两个类, 完美复刻 concurrent.futures.Executor API
- 7.78 2026-05 优化增强 FlexibleThreadPool 和 AsyncPoolExecutor
- 7.79 2026-05 优化funboost pydantic model 在ide 下的自动补全和提示
- 7.80 2026-05 funweb增加告警配置功能
- 7.81 ctrl_c_recv函数 改名成 enable_ctrl_c_quit_on_windows
- 8. Funboost 用于爬虫
- 8.1 核心理念:函数调度器 vs URL调度器
- 8.2 @boost 装饰器赋予爬虫函数的 30+ 种控制能力
- 8.3 为什么 Funboost 不需要"插件"和"中间件"
- 8.4 Funboost 爬虫辅助工具:funspider 与 boost_spider
- 8.5 Funboost vs Scrapy:关键场景实战对比
- 8.6 函数级重试 vs URL级重试
- 8.7 讨Scrapy檄文:Funboost兴,Scrapy亡,天下爬虫,当顺天命!
- 8.8 funspider介绍
- 8.9 funboost + funspider + boost_spider + your_utils 混合使用
- 8.10 集中对比:Funboost 30项 vs Scrapy
- 8.11 Funboost 爬虫最佳实践
- 8.12 总结
- 9 轻松远程服务器部署运行函数
- 10.python3.6-3.12 安装/使用funboost出错问题反馈
- 11 funboost 使用某些中间件或三方任务队列框架作为broker的例子(包括celery框架)。
- 11.1 使用celery作为funboost的中间件
- 11.1.1 funboost启动celery消费和定时和flower
- 11.1.2 funboost发布任务到celery队列
- 11.1.3 funboost使用celery作为中间件的运行截图
- 11.1.4 funboost 的api 操作celery,比人工操作 celery 大大简化。
- 11.1.5 funboost 使用celery作为中间件时候,可以填写的celery任务配置
- 11.1.6 网上关于celery项目目录结构和文件夹/文件命名必须很死板, 是错的
- 11.1.7 仍然想使用celery命令行?
- 11.1.8 任然可以亲自使用celery的原生任务函数对象
celery.app.task.Task - 11.1.10 funboost使用celery作为broker_kind的原理
- 11.2 使用nameko 微服务框架作为funboost消息中间件例子
- 11.3 使用kombu作为funboost的broker
- 11.4 使用dramatiq框架作为funboost消息队列
- 11.5 使用huey框架作为funboost消息队列
- 11.6 使用rq框架作为funboost的broker
- 11.7 使用 grpc 作为funboost的broker
- 11.8 使用 mysql_cdc 作为 funboost 的broker
- 11.9 演示 funboost 使用 tcp/udp/http 作为broker
- 11.10 Watchdog Broker:监听文件系统变更(ETL 利器)
- 11.1 使用celery作为funboost的中间件
- 12 funboost 控制台支持命令行
- 13 funweb (funboost web manager) 介绍
- 14 🤖 利用 AI 来掌握 funboost 的正确方式
- 15. ⚡ Funboost.FaaS:让函数起飞的 Serverless 引擎 🚀
- 20. 🌟 Funboost 核心设计思想