You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Functions v2 Python蓝图使用及特性相关技术咨询

Azure Functions v2 Python 蓝图使用指南与常见问题解答

一、如何使用蓝图

  1. 定义蓝图文件
    创建单独的蓝图文件(比如http_blueprint.py),导入Blueprint并实例化,用bp.route(或对应触发器的装饰器)定义函数,写法和常规函数类似,只是把app换成bp:
# http_blueprint.py
from azure.functions import Blueprint

bp = Blueprint()

@bp.route(route="hello", methods=["GET"])
def hello_blueprint(req):
    return "Hello from blueprint!"
  1. 在主文件注册蓝图
    在function_app.py中导入蓝图,调用app.register_blueprint()完成注册:
# function_app.py
from http_blueprint import bp
import azure.functions as func

app = func.FunctionApp()
app.register_blueprint(bp)

二、蓝图相比直接导入的优势

  • 模块化拆分:按业务、功能拆分函数,避免主文件臃肿,代码结构更清晰
  • 统一路由前缀:注册时可指定url_prefix(比如app.register_blueprint(bp, url_prefix="/api/v1")),给蓝图下所有HTTP路由统一加前缀,不用逐个修改
  • 复用性强:同一个蓝图可在不同Function App或同一App的不同前缀下重复注册,提升代码复用率
  • 隔离性好:蓝图内的函数、配置相互独立,便于单独维护和测试,不会和其他模块冲突

三、常见疑问解答

  1. 蓝图中的函数是否属于app.functions?
    是的。注册蓝图后,蓝图内的所有函数都会被纳入app.functions集合,和主文件直接定义的函数没有区别。主文件里的函数用app开头的装饰器,蓝图里换成bp开头,注册后同样会被识别为App的函数,参与加载和执行。

  2. 蓝图只能包含HTTP触发器吗?
    不是,HTTP触发器只是示例。蓝图支持所有Azure Functions触发器类型,比如定时器、Blob、队列触发器等。示例:

# timer_blueprint.py
from azure.functions import Blueprint
import datetime

bp = Blueprint()

@bp.timer_trigger(schedule="0 */5 * * * *", arg_name="timer", run_on_startup=False)
def timer_blueprint_func(timer):
    if timer.past_due:
        print('定时器已逾期!')
    print(f'Python定时器触发器执行于 {datetime.datetime.now()}')
  1. 可以创建多个蓝图文件吗?
    当然可以。按功能或触发器类型拆分多个蓝图文件,在主文件中逐个注册即可:
# function_app.py
from http_blueprint import bp as http_bp
from timer_blueprint import bp as timer_bp
import azure.functions as func

app = func.FunctionApp()
app.register_blueprint(http_bp, url_prefix="/api")
app.register_blueprint(timer_bp)

内容的提问来源于stack exchange,提问作者Dean MacGregor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 15:45:47