{"id":5585,"date":"2026-02-04T11:11:20","date_gmt":"2026-02-04T11:11:20","guid":{"rendered":"https:\/\/b2f.pt\/?p=5585"},"modified":"2026-10-19T12:50:07","modified_gmt":"2026-10-19T12:50:07","slug":"azure-functions-python","status":"publish","type":"post","link":"https:\/\/b2f.pt\/en\/azure-functions-python\/","title":{"rendered":"Azure Functions &#8211; Mais agilidade, menos complexidade"},"content":{"rendered":"<p>Num cen\u00e1rio em que as exig\u00eancias tecnol\u00f3gicas crescem continuamente, as organiza\u00e7\u00f5es procuram solu\u00e7\u00f5es simples, eficientes e adapt\u00e1veis para responder a novos desafios.<\/p>\n\n\n\n<p>\u00c9 precisamente neste contexto que entram as <strong>Azure Functions<\/strong>, uma solu\u00e7\u00e3o de <strong>computa\u00e7\u00e3o serverless<\/strong> do <strong>Microsoft Azure<\/strong>.<\/p>\n\n\n\n<p>Esta tecnologia permite executar blocos de c\u00f3digo de forma simples e escal\u00e1vel, sem necessidade de gerir servidores ou infraestrutura.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Onde \u00e9 que as Azure Functions Podem Fazer a Diferen\u00e7a?<\/h2>\n\n\n\n<p>As <strong>Azure Functions<\/strong> destacam-se por reduzirem a complexidade do desenvolvimento e da gest\u00e3o de aplica\u00e7\u00f5es.<\/p>\n\n\n\n<p>Isto acontece porque o Azure gere automaticamente a infraestrutura. Desta forma, as equipas podem concentrar-se no desenvolvimento das funcionalidades necess\u00e1rias.<\/p>\n\n\n\n<p>Al\u00e9m disso, as Azure Functions permitem criar <strong>aplica\u00e7\u00f5es e microsservi\u00e7os leves, modulares e escal\u00e1veis<\/strong>, que respondem a diferentes eventos.<\/p>\n\n\n\n<p>Entre estes eventos, destacam-se pedidos HTTP, altera\u00e7\u00f5es em bases de dados, mensagens em filas de espera e tarefas agendadas.<\/p>\n\n\n\n<p>Por outro lado, as Azure Functions permitem a integra\u00e7\u00e3o com outros servi\u00e7os do ecossistema Azure e com <strong>APIs externas<\/strong>.<\/p>\n\n\n\n<p>Adicionalmente, suportam v\u00e1rias linguagens de programa\u00e7\u00e3o, como <strong>C#<\/strong>, <strong>JavaScript<\/strong> and <strong>Python<\/strong>. Assim, facilitam a adapta\u00e7\u00e3o por parte das equipas de desenvolvimento.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Python e Azure Functions: A Parceria Ideal para Solu\u00e7\u00f5es Inovadoras<\/h2>\n\n\n\n<p>No desenvolvimento de <strong>Azure Functions com Python<\/strong>, as equipas podem criar o c\u00f3digo localmente, utilizando diferentes ferramentas.<\/p>\n\n\n\n<p>Por exemplo, podem recorrer ao <strong>Visual Studio Code<\/strong>, ao <strong>PyCharm<\/strong> ou ao terminal, atrav\u00e9s das <strong>Azure Functions Core Tools<\/strong>.<\/p>\n\n\n\n<p>Posteriormente, publicam o c\u00f3digo na cloud do Microsoft Azure.<\/p>\n\n\n\n<p>Al\u00e9m disso, a integra\u00e7\u00e3o com plataformas como <strong>GitHub<\/strong>, <strong>Azure DevOps<\/strong> or <strong>GitLab<\/strong> permite estabelecer um fluxo cont\u00ednuo de desenvolvimento, testes e publica\u00e7\u00e3o.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Automatiza\u00e7\u00e3o com CI\/CD<\/h3>\n\n\n\n<p>Neste contexto, a utiliza\u00e7\u00e3o de <strong>pipelines de CI\/CD<\/strong> facilita a automatiza\u00e7\u00e3o de tarefas essenciais.<\/p>\n\n\n\n<p>Estes processos permitem integrar, testar e entregar c\u00f3digo de forma cont\u00ednua. Assim, simplificam as tarefas desde a verifica\u00e7\u00e3o at\u00e9 \u00e0 publica\u00e7\u00e3o de vers\u00f5es atualizadas.<\/p>\n\n\n\n<p>Consequentemente, as equipas conseguem melhorar a consist\u00eancia e a rapidez do processo de desenvolvimento.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoriza\u00e7\u00e3o e Diagn\u00f3stico<\/h3>\n\n\n\n<p>Paralelamente, o Azure recolhe <strong>logs e m\u00e9tricas em tempo real<\/strong>, fornecendo visibilidade sobre o comportamento das fun\u00e7\u00f5es.<\/p>\n\n\n\n<p>Desta forma, as equipas conseguem acompanhar a execu\u00e7\u00e3o do c\u00f3digo e identificar eventuais problemas.<\/p>\n\n\n\n<p>Al\u00e9m disso, esta monitoriza\u00e7\u00e3o simplifica o diagn\u00f3stico e contribui para uma manuten\u00e7\u00e3o mais eficiente das aplica\u00e7\u00f5es.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Estruturas de Programa\u00e7\u00e3o em Azure Functions<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Modelo v1 vs. Modelo v2<\/h3>\n\n\n\n<p>O desenvolvimento de <strong>Azure Functions em Python<\/strong> pode seguir dois modelos principais: <strong>v1<\/strong> and <strong>v2<\/strong>.<\/p>\n\n\n\n<p>O modelo v1, mais antigo, recorre fortemente a ficheiros de configura\u00e7\u00e3o externos, como o <strong>function.json. <\/strong>Assim, apresenta uma menor integra\u00e7\u00e3o entre a configura\u00e7\u00e3o e o c\u00f3digo.<\/p>\n\n\n\n<p>Por outro lado, o <strong>modelo v2<\/strong> apresenta uma abordagem mais moderna e centrada no c\u00f3digo. Neste caso, os programadores podem definir as fun\u00e7\u00f5es diretamente em Python, utilizando <em>decorators<\/em>.<\/p>\n\n\n\n<p>Desta forma, o modelo v2 simplifica a estrutura dos projetos e proporciona uma melhor experi\u00eancia de desenvolvimento.<\/p>\n\n\n\n<p>A escolha entre os dois modelos deve considerar diferentes fatores. Entre eles, destacam-se a complexidade da aplica\u00e7\u00e3o, o grau de personaliza\u00e7\u00e3o necess\u00e1rio e a prefer\u00eancia por uma abordagem mais declarativa ou orientada ao c\u00f3digo.<\/p>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Modelo v1<\/h2>\n\n\n\n<p>No <strong>modelo v1<\/strong>, cada fun\u00e7\u00e3o ocupa uma pasta pr\u00f3pria e utiliza dois ficheiros principais:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>__init__.py:<\/strong> Cont\u00e9m a l\u00f3gica da fun\u00e7\u00e3o desenvolvida em Python.<\/li>\n\n\n\n<li><strong>function.json: <\/strong>Define a configura\u00e7\u00e3o da fun\u00e7\u00e3o, nomeadamente os <em>triggers<\/em> and <em>bindings<\/em>.<\/li>\n<\/ul>\n\n\n\n<p>Desta forma, o modelo separa a l\u00f3gica da aplica\u00e7\u00e3o das respetivas configura\u00e7\u00f5es.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Estrutura de um Projeto no Modelo v1<\/h4>\n\n\n\n<p>Segue-se uma estrutura t\u00edpica de um projeto desenvolvido com o modelo v1:<\/p>\n\n\n\n<div style=\"height:4px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>MyFunctionApp\/\n\u2502\u2500\u2500 host.json\n\u2502\u2500\u2500 local.settings.json\n\u2502\n\u251c\u2500\u2500 HttpTriggerFunction\/\n\u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u2514\u2500\u2500 function.json\n\u2502\n\u2514\u2500\u2500 XXXXXXXXFunction2\/\n    \u251c\u2500\u2500 __init__.py\n    \u2514\u2500\u2500 function.json<\/code><\/pre>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>O exemplo seguinte ilustra como implementar uma fun\u00e7\u00e3o HTTP simples no Modelo v1, apresentando de forma clara a implementa\u00e7\u00e3o do c\u00f3digo nos ficheiros<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"> <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">__init.py__<\/mark><\/mark> and <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">function.json<\/mark>.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/b2f.pt\/en\/contacts\/\" target=\"_blank\" rel=\" noreferrer noopener\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"466\" src=\"https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-python-desenvolvimento.png\" alt=\"Representa\u00e7\u00e3o da computa\u00e7\u00e3o serverless com Azure Functions na plataforma Microsoft Azure.\" class=\"wp-image-5875\" style=\"width:637px;height:auto\" srcset=\"https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-python-desenvolvimento.png 1024w, https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-python-desenvolvimento-300x137.png 300w, https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-python-desenvolvimento-768x350.png 768w, https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-python-desenvolvimento-18x8.png 18w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n\n\n<div style=\"height:19px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Al\u00e9m disso, esta organiza\u00e7\u00e3o torna o modelo particularmente \u00fatil em prot\u00f3tipos ou projetos de pequena dimens\u00e3o.<\/p>\n\n\n\n<p>Assim, as equipas conseguem desenvolver solu\u00e7\u00f5es simples de forma r\u00e1pida, sobretudo quando a estrutura do c\u00f3digo n\u00e3o exige uma modulariza\u00e7\u00e3o complexa.<\/p>\n\n\n\n<p>No entanto, \u00e0 medida que a complexidade aumenta, o modelo v1 pode apresentar limita\u00e7\u00f5es.<\/p>\n\n\n\n<p>Por exemplo, projetos com m\u00faltiplas fun\u00e7\u00f5es, l\u00f3gica partilhada e testes autom\u00e1ticos podem exigir uma estrutura mais flex\u00edvel.<\/p>\n\n\n\n<p>Nesses casos, recomenda-se a utiliza\u00e7\u00e3o do <strong>modelo v2<\/strong>, que oferece uma arquitetura mais modular e escal\u00e1vel.<\/p>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Modelo v2<\/h2>\n\n\n\n<p>The <strong>modelo v2<\/strong> surge como uma evolu\u00e7\u00e3o do modelo anterior, procurando ultrapassar algumas das suas limita\u00e7\u00f5es em projetos mais complexos.<\/p>\n\n\n\n<p>Neste modelo, v\u00e1rias fun\u00e7\u00f5es podem coexistir num \u00fanico ficheiro Python.<\/p>\n\n\n\n<p>Al\u00e9m disso, os programadores declaram os <em>triggers<\/em> and <em>bindings<\/em> diretamente no c\u00f3digo, atrav\u00e9s de <strong>decorators<\/strong>.<\/p>\n\n\n\n<p>Desta forma, deixam de ser necess\u00e1rios ficheiros <strong>function.json<\/strong> separados para cada fun\u00e7\u00e3o.<\/p>\n\n\n\n<p>Consequentemente, o projeto torna-se mais organizado e o c\u00f3digo mais leg\u00edvel, facilitando tamb\u00e9m a manuten\u00e7\u00e3o.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Estrutura de um Projeto no Modelo v2<\/h4>\n\n\n\n<p>No exemplo seguinte, toda a l\u00f3gica das fun\u00e7\u00f5es encontra-se no ficheiro function_app.py:<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>\nMyFunctionApp\/\n\u2502\u2500\u2500 host.json\n\u2502\u2500\u2500 local.settings.json\n\u2502\u2500\u2500 function_app.py\n\u2502\u2500\u2500 requirements.txt<\/code><\/pre>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>No exemplo seguinte, a fun\u00e7\u00e3o acionada por um Timer Trigger \u00e9 definida atrav\u00e9s de um <em>decorator<\/em>, que especifica a sua agenda de execu\u00e7\u00e3o. Dentro da fun\u00e7\u00e3o <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">main<\/mark>, implementa-se a l\u00f3gica que ser\u00e1 executada sempre que o <em>trigger<\/em> dispara.<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Utiliza-se <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">logging.info()<\/mark> para registar mensagens nos <em>logs<\/em>, uma pr\u00e1tica fundamental em aplica\u00e7\u00f5es <em>serverless<\/em>, onde n\u00e3o existe uma interface direta para ver o <em>output<\/em>. Os <em>logs<\/em> permitem monitorizar a execu\u00e7\u00e3o, detetar erros e manter informa\u00e7\u00f5es de auditoria. Neste caso, cada disparo do <em>Timer Trigger<\/em> regista a mensagem <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">&#8220;Hello World! A fun\u00e7\u00e3o Timer Trigger foi executada.&#8221;<\/mark>, confirmando que a fun\u00e7\u00e3o correu corretamente.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>\nimport azure.functions as func\nimport logging\n\n# Criar a Function App (obrigat\u00f3rio no V2)\napp = func.FunctionApp()\n\n# Fun\u00e7\u00e3o Timer Trigger no Modelo V2\n# Executa a cada 5 minutos\n@app.timer_trigger(schedule=\"0 *\/5 * * * *\", arg_name=\"mytimer\")\ndef timer_main(mytimer: func.TimerRequest) -&gt; None:\n    \"\"\"\n    Fun\u00e7\u00e3o Timer Trigger que escreve 'Hello World' nos logs a cada 5 minutos.\n    \"\"\"\n    logging.info(\"Hello World! A fun\u00e7\u00e3o Timer Trigger foi executada.\")\n<\/code><\/pre>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Caso tenha por objetivo adicionar uma fun\u00e7\u00e3o, por exemplo, com <em>HTTP Trigger<\/em>, a seguir \u00e9 poss\u00edvel observar como seria a implementa\u00e7\u00e3o da mesma:<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>\nimport azure.functions as func\nimport logging\n\napp = func.FunctionApp()\n\n# Fun\u00e7\u00e3o Timer Trigger que executa a cada 5 minutos\n@app.timer_trigger(schedule=\"0 *\/5 * * * *\", arg_name=\"mytimer\")\ndef timer_main(mytimer: func.TimerRequest) -&gt; None:\n    logging.info(\"Hello World! Timer Trigger executada.\")\n\n# Fun\u00e7\u00e3o HTTP Trigger que responde a pedidos HTTP (GET\/POST)\n@app.route(route=\"hello\", methods=&#91;\"GET\", \"POST\"])\ndef http_main(req: func.HttpRequest) -&gt; func.HttpResponse:\n    name = req.params.get(\"name\")\n    if not name:\n        try:\n            body = req.get_json()\n            if isinstance(body, dict):\n                name = body.get(\"name\")\n        except ValueError:\n            name = None\n\n    if name:\n        return func.HttpResponse(f\"Ol\u00e1, {name}!\", status_code=200)\n\n    return func.HttpResponse(\n        \"Por favor, envia o par\u00e2metro 'name' na query ou no corpo.\",\n        status_code=400,\n    )<\/code><\/pre>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Como podemos observar, o c\u00f3digo define duas fun\u00e7\u00f5es independentes no mesmo ficheiro.<\/p>\n\n\n\n<p>Por um lado, a fun\u00e7\u00e3o timer_main executa-se automaticamente a cada cinco minutos e regista uma mensagem nos logs.<\/p>\n\n\n\n<p>Por outro lado, a fun\u00e7\u00e3o http_main responde a pedidos HTTP.<\/p>\n\n\n\n<p>Al\u00e9m disso, permite receber opcionalmente um par\u00e2metro name para personalizar a resposta.<\/p>\n\n\n\n<p>Desta forma, o exemplo demonstra como v\u00e1rias fun\u00e7\u00f5es podem coexistir num \u00fanico ficheiro, sem necessidade de um main central.<\/p>\n\n\n\n<p>Consequentemente, esta abordagem simplifica a organiza\u00e7\u00e3o do c\u00f3digo e facilita o desenvolvimento de aplica\u00e7\u00f5es com diferentes funcionalidades.<\/p>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Blueprint<\/h3>\n\n\n\n<p>No Modelo V2 das Azure Functions em Python, os <em>blueprints<\/em> constituem uma forma de modularizar e oNo <strong>modelo v2 das Azure Functions em Python<\/strong>, os <strong>Blueprints<\/strong> permitem modularizar e organizar fun\u00e7\u00f5es fora do n\u00facleo principal da aplica\u00e7\u00e3o.<\/p>\n\n\n\n<p>Um <em>Blueprint<\/em> \u00e9 uma classe que permite registar fun\u00e7\u00f5es de forma independente.<\/p>\n\n\n\n<p>Posteriormente, o programador associa essas fun\u00e7\u00f5es \u00e0 aplica\u00e7\u00e3o principal, permitindo que o <em>runtime<\/em> as reconhe\u00e7a.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Principais Vantagens dos Blueprints<\/h4>\n\n\n\n<p>Entre os principais benef\u00edcios, destacam-se:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Modulariza\u00e7\u00e3o da aplica\u00e7\u00e3o:<\/strong> Permite dividir as funcionalidades em componentes e distribuir fun\u00e7\u00f5es por v\u00e1rios ficheiros Python.<\/li>\n\n\n\n<li><strong>Reutiliza\u00e7\u00e3o de c\u00f3digo:<\/strong> Facilita a cria\u00e7\u00e3o de interfaces p\u00fablicas extens\u00edveis e a reutiliza\u00e7\u00e3o de APIs e l\u00f3gica comum.<\/li>\n\n\n\n<li><strong>Organiza\u00e7\u00e3o e manuten\u00e7\u00e3o:<\/strong> Torna o c\u00f3digo mais limpo, estruturado e f\u00e1cil de manter.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Estrutura de um Projeto com Blueprints<\/h4>\n\n\n\n<p>A estrutura seguinte representa uma Azure Function desenvolvida com recurso a Blueprints:<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;project_root&gt;\/\n\u2502\n\u251c\u2500\u2500 function_app.py          # Regista os blueprints\n\u251c\u2500\u2500 http_blueprint.py       # Blueprint com fun\u00e7\u00f5es HTTP\n\u251c\u2500\u2500 outro_blueprint.py      # Outro m\u00f3dulo com fun\u00e7\u00f5es espec\u00edficas\n\u251c\u2500\u2500 host.json\n\u251c\u2500\u2500 local.settings.json\n\u251c\u2500\u2500 requirements.txt\n\u251c\u2500\u2500 .funcignore<\/code><\/pre>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>A seguir est\u00e1 representado um <em>Blueprint<\/em> simples, que cont\u00e9m uma fun\u00e7\u00e3o HTTP que responde a pedidos de rota \u2018\/hello\u2019.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><em>http_blueprint.py<\/em><br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import azure.functions as func\n\nbp = func.Blueprint()\n\n@bp.route(route=\"hello\")\ndef hello(req: func.HttpRequest) -&gt; func.HttpResponse:\n    user = req.params.get(\"user\")\n    return func.HttpResponse(f\"Ol\u00e1, {user or 'mundo'}!\")\n<\/code><\/pre>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Aquando da defini\u00e7\u00e3o do Blueprint, \u00e9 necess\u00e1rio regist\u00e1-lo na aplica\u00e7\u00e3o principal para que as rotas fiquem acess\u00edveis pelo Azure Functions <em>runtime<\/em>. O exemplo seguinte mostra como importar o m\u00f3dulo onde o Blueprint est\u00e1 definido e registar as fun\u00e7\u00f5es associadas ao mesmo numa inst\u00e2ncia da <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">FunctionApp<\/mark>.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><em>function_app.py<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import azure.functions as func\nfrom http_blueprint import bp\n\napp = func.FunctionApp()\napp.register_functions(bp)\n\n<\/code><\/pre>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Desta forma, as rotas definidas no Blueprint ficam acess\u00edveis atrav\u00e9s da aplica\u00e7\u00e3o principal.<\/p>\n\n\n\n<p>Al\u00e9m disso, esta abordagem permite separar funcionalidades e responsabilidades em diferentes m\u00f3dulos.<\/p>\n\n\n\n<p>The <strong>modelo v2<\/strong> \u00e9 especialmente vantajoso em projetos com m\u00faltiplas fun\u00e7\u00f5es e complexidade crescente.<\/p>\n\n\n\n<p>Por isso, torna-se uma op\u00e7\u00e3o interessante para equipas maiores que precisam de trabalhar em paralelo.<\/p>\n\n\n\n<p>Consequentemente, contribui para melhorar a <strong>escalabilidade, organiza\u00e7\u00e3o e manuten\u00e7\u00e3o do c\u00f3digo<\/strong>.<\/p>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">O Equil\u00edbrio entre Azure Functions e Python: Vantagens e Desafios<\/h2>\n\n\n\n<p>Para escolher a solu\u00e7\u00e3o mais adequada, \u00e9 fundamental compreender as vantagens e limita\u00e7\u00f5es das <strong>Azure Functions<\/strong> e da sua implementa\u00e7\u00e3o em <strong>Python<\/strong>.<\/p>\n\n\n\n<p>Desta forma, as organiza\u00e7\u00f5es conseguem tomar decis\u00f5es mais informadas, de acordo com os requisitos t\u00e9cnicos de cada projeto.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/b2f.pt\/en\/contacts\/\" target=\"_blank\" rel=\" noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"416\" src=\"https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-escalabilidade-custos.png\" alt=\"Representa\u00e7\u00e3o das vantagens das Azure Functions, incluindo escalabilidade, agilidade e redu\u00e7\u00e3o da complexidade.\" class=\"wp-image-5876\" srcset=\"https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-escalabilidade-custos.png 1024w, https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-escalabilidade-custos-300x122.png 300w, https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-escalabilidade-custos-768x312.png 768w, https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-escalabilidade-custos-18x7.png 18w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Modelos de Pagamento<\/h2>\n\n\n\n<p>As Azure Functions disponibilizam diferentes op\u00e7\u00f5es de alojamento e pagamento.<\/p>\n\n\n\n<p>Neste contexto, o artigo original destaca dois modelos de pagamento do tipo <strong>pay-as-you-go<\/strong>: o <strong>Consumption Plan<\/strong> e o <strong>Flex Consumption Plan<\/strong>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Consumption Plan<\/h4>\n\n\n\n<p>No <strong>Consumption Plan<\/strong>, o utilizador paga pelo tempo de execu\u00e7\u00e3o e pelo n\u00famero total de execu\u00e7\u00f5es das fun\u00e7\u00f5es.<\/p>\n\n\n\n<p>Al\u00e9m disso, o plano apresenta uma oferta gratuita mensal de 1 milh\u00e3o de execu\u00e7\u00f5es e 400 000 GB-segundos.<\/p>\n\n\n\n<p>Este plano tem um limite de 1,5 GB de mem\u00f3ria por inst\u00e2ncia.<\/p>\n\n\n\n<p>Por outro lado, o tempo m\u00e1ximo de execu\u00e7\u00e3o por fun\u00e7\u00e3o \u00e9, por defeito, de cinco minutos, podendo aumentar at\u00e9 dez minutos atrav\u00e9s de configura\u00e7\u00e3o.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Flex Consumption Plan<\/h4>\n\n\n\n<p>The <strong>Flex Consumption Plan<\/strong> representa uma op\u00e7\u00e3o mais recente e oferece funcionalidades adicionais.<\/p>\n\n\n\n<p>Entre elas, destacam-se as inst\u00e2ncias <strong>Always Ready<\/strong>, a maior flexibilidade na configura\u00e7\u00e3o da mem\u00f3ria e a integra\u00e7\u00e3o com redes virtuais (<strong>VNET<\/strong>).<\/p>\n\n\n\n<p>Al\u00e9m disso, este plano pode apresentar custos superiores, dependendo da configura\u00e7\u00e3o e da utiliza\u00e7\u00e3o.<\/p>\n\n\n\n<p>Por outro lado, permite maior controlo sobre os recursos e o desempenho.<\/p>\n\n\n\n<p>Por isso, a Microsoft recomenda o Flex Consumption Plan para cen\u00e1rios serverless que exigem maior flexibilidade e capacidade de configura\u00e7\u00e3o.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">A Experi\u00eancia da B2F com Azure Functions<\/h3>\n\n\n\n<p>In the <strong><a href=\"https:\/\/b2f.pt\/en\/contacts\/\">B2F<\/a><\/strong>, desenvolvemos projetos que demonstram o valor da utiliza\u00e7\u00e3o de <strong>Azure Functions com Python<\/strong>.<\/p>\n\n\n\n<p>Estes projetos evidenciam n\u00e3o s\u00f3 o desempenho robusto e a flexibilidade da solu\u00e7\u00e3o, mas tamb\u00e9m a sua capacidade de integra\u00e7\u00e3o com plataformas externas.<\/p>\n\n\n\n<p>Por exemplo, a utiliza\u00e7\u00e3o de <strong>REST APIs<\/strong> permite estabelecer liga\u00e7\u00f5es entre diferentes sistemas e executar processos <strong>ETL (Extract, Transform and Load)<\/strong>.<\/p>\n\n\n\n<p>Desta forma, as organiza\u00e7\u00f5es conseguem automatizar tarefas e interligar sistemas heterog\u00e9neos.<\/p>\n\n\n\n<p>Al\u00e9m disso, esta integra\u00e7\u00e3o contribui para impulsionar a <strong>transforma\u00e7\u00e3o digital<\/strong> de forma escal\u00e1vel.<\/p>\n\n\n\n<p>Consequentemente, pode promover uma redu\u00e7\u00e3o significativa dos custos operacionais.<\/p>\n\n\n\n<p>Investir em <strong>Azure Functions<\/strong> representa, assim, um passo importante para empresas que procuram manter a competitividade.<\/p>\n\n\n\n<p>Al\u00e9m disso, permite ganhar agilidade operacional, reduzir custos com infraestruturas subutilizadas e acelerar o ciclo de inova\u00e7\u00e3o.<\/p>\n\n\n\n<p>Desta forma, as organiza\u00e7\u00f5es conseguem transformar ideias em servi\u00e7os escal\u00e1veis de forma r\u00e1pida e eficiente.<\/p>\n\n\n\n<p>Este \u00e9 o momento ideal para aproveitar o potencial das <strong>Azure Functions<\/strong>, contando com a <strong><a href=\"https:\/\/b2f.pt\/en\/contacts\/\">B2F <\/a><\/strong>como parceira estrat\u00e9gica na transforma\u00e7\u00e3o digital.<\/p>\n\n\n\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Num cen\u00e1rio em que as exig\u00eancias tecnol\u00f3gicas crescem continuamente, as organiza\u00e7\u00f5es procuram solu\u00e7\u00f5es simples, eficientes e adapt\u00e1veis para responder a novos desafios. \u00c9 precisamente neste contexto que entram as Azure Functions, uma solu\u00e7\u00e3o de computa\u00e7\u00e3o serverless do Microsoft Azure. Esta tecnologia permite executar blocos de c\u00f3digo de forma simples e escal\u00e1vel, sem necessidade de gerir [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5877,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[94,97,95,96],"class_list":["post-5585","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-business-intelligence","tag-azure-functions","tag-microsoft-azure","tag-python","tag-serverless"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>Azure Functions com Python: Guia, Modelos e Vantagens<\/title>\r\n<meta name=\"description\" content=\"Descubra como utilizar Azure Functions com Python, conhe\u00e7a os modelos v1 e v2, as vantagens da computa\u00e7\u00e3o serverless e os planos de pagamento.\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/b2f.pt\/en\/azure-functions-python\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_GB\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Azure Functions com Python: Guia, Modelos e Vantagens\" \/>\r\n<meta property=\"og:description\" content=\"Descubra como utilizar Azure Functions com Python, conhe\u00e7a os modelos v1 e v2, as vantagens da computa\u00e7\u00e3o serverless e os planos de pagamento.\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/b2f.pt\/en\/azure-functions-python\/\" \/>\r\n<meta property=\"og:site_name\" content=\"B2F - Business to Future\" \/>\r\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/businesstofuture\/?locale=pt_PT\" \/>\r\n<meta property=\"article:published_time\" content=\"2026-02-04T11:11:20+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2026-10-19T12:50:07+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-computacao-serverless.jpg\" \/>\r\n\t<meta property=\"og:image:width\" content=\"2048\" \/>\r\n\t<meta property=\"og:image:height\" content=\"1356\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\r\n<meta name=\"author\" content=\"b2f\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"b2f\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/b2f.pt\/azure-functions-python\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/b2f.pt\/azure-functions-python\/\"},\"author\":{\"name\":\"b2f\",\"@id\":\"https:\/\/b2f.pt\/#\/schema\/person\/53a60449eab118b3e0c1818995da0497\"},\"headline\":\"Azure Functions &#8211; Mais agilidade, menos complexidade\",\"datePublished\":\"2026-02-04T11:11:20+00:00\",\"dateModified\":\"2026-10-19T12:50:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/b2f.pt\/azure-functions-python\/\"},\"wordCount\":1899,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/b2f.pt\/#organization\"},\"image\":{\"@id\":\"https:\/\/b2f.pt\/azure-functions-python\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-computacao-serverless.jpg\",\"keywords\":[\"Azure Functions\",\"Microsoft Azure\",\"Python\",\"Serverless\"],\"articleSection\":[\"Business Intelligence\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/b2f.pt\/azure-functions-python\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/b2f.pt\/azure-functions-python\/\",\"url\":\"https:\/\/b2f.pt\/azure-functions-python\/\",\"name\":\"Azure Functions com Python: Guia, Modelos e Vantagens\",\"isPartOf\":{\"@id\":\"https:\/\/b2f.pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/b2f.pt\/azure-functions-python\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/b2f.pt\/azure-functions-python\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-computacao-serverless.jpg\",\"datePublished\":\"2026-02-04T11:11:20+00:00\",\"dateModified\":\"2026-10-19T12:50:07+00:00\",\"description\":\"Descubra como utilizar Azure Functions com Python, conhe\u00e7a os modelos v1 e v2, as vantagens da computa\u00e7\u00e3o serverless e os planos de pagamento.\",\"breadcrumb\":{\"@id\":\"https:\/\/b2f.pt\/azure-functions-python\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/b2f.pt\/azure-functions-python\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/b2f.pt\/azure-functions-python\/#primaryimage\",\"url\":\"https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-computacao-serverless.jpg\",\"contentUrl\":\"https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-computacao-serverless.jpg\",\"width\":2048,\"height\":1356,\"caption\":\"Representa\u00e7\u00e3o da computa\u00e7\u00e3o serverless com Azure Functions na plataforma Microsoft Azure.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/b2f.pt\/azure-functions-python\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/b2f.pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Azure Functions &#8211; Mais agilidade, menos complexidade\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/b2f.pt\/#website\",\"url\":\"https:\/\/b2f.pt\/\",\"name\":\"B2F - Business to Future\",\"description\":\"Retire Conhecimento Dos Seus Dados\",\"publisher\":{\"@id\":\"https:\/\/b2f.pt\/#organization\"},\"alternateName\":\"B2F\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/b2f.pt\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/b2f.pt\/#organization\",\"name\":\"B2F - Business to Future\",\"alternateName\":\"B2F\",\"url\":\"https:\/\/b2f.pt\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/b2f.pt\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/b2f.pt\/wp-content\/uploads\/2026\/10\/b2f_horizontal_blue_h100px.png\",\"contentUrl\":\"https:\/\/b2f.pt\/wp-content\/uploads\/2026\/10\/b2f_horizontal_blue_h100px.png\",\"width\":276,\"height\":102,\"caption\":\"B2F - Business to Future\"},\"image\":{\"@id\":\"https:\/\/b2f.pt\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/businesstofuture\/?locale=pt_PT\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/b2f.pt\/#\/schema\/person\/53a60449eab118b3e0c1818995da0497\",\"name\":\"b2f\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/b2f.pt\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b44a9c116c175f8fb789cb42f4dcedc8051cd52bd25399a21d294fe1f984bbc9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b44a9c116c175f8fb789cb42f4dcedc8051cd52bd25399a21d294fe1f984bbc9?s=96&d=mm&r=g\",\"caption\":\"b2f\"},\"sameAs\":[\"https:\/\/b2f.pt\"],\"url\":\"https:\/\/b2f.pt\/en\/author\/b2f\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Azure Functions com Python: Guia, Modelos e Vantagens","description":"Descubra como utilizar Azure Functions com Python, conhe\u00e7a os modelos v1 e v2, as vantagens da computa\u00e7\u00e3o serverless e os planos de pagamento.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/b2f.pt\/en\/azure-functions-python\/","og_locale":"en_GB","og_type":"article","og_title":"Azure Functions com Python: Guia, Modelos e Vantagens","og_description":"Descubra como utilizar Azure Functions com Python, conhe\u00e7a os modelos v1 e v2, as vantagens da computa\u00e7\u00e3o serverless e os planos de pagamento.","og_url":"https:\/\/b2f.pt\/en\/azure-functions-python\/","og_site_name":"B2F - Business to Future","article_publisher":"https:\/\/www.facebook.com\/businesstofuture\/?locale=pt_PT","article_published_time":"2026-02-04T11:11:20+00:00","article_modified_time":"2026-10-19T12:50:07+00:00","og_image":[{"width":2048,"height":1356,"url":"https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-computacao-serverless.jpg","type":"image\/jpeg"}],"author":"b2f","twitter_card":"summary_large_image","twitter_misc":{"Written by":"b2f","Estimated reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/b2f.pt\/azure-functions-python\/#article","isPartOf":{"@id":"https:\/\/b2f.pt\/azure-functions-python\/"},"author":{"name":"b2f","@id":"https:\/\/b2f.pt\/#\/schema\/person\/53a60449eab118b3e0c1818995da0497"},"headline":"Azure Functions &#8211; Mais agilidade, menos complexidade","datePublished":"2026-02-04T11:11:20+00:00","dateModified":"2026-10-19T12:50:07+00:00","mainEntityOfPage":{"@id":"https:\/\/b2f.pt\/azure-functions-python\/"},"wordCount":1899,"commentCount":0,"publisher":{"@id":"https:\/\/b2f.pt\/#organization"},"image":{"@id":"https:\/\/b2f.pt\/azure-functions-python\/#primaryimage"},"thumbnailUrl":"https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-computacao-serverless.jpg","keywords":["Azure Functions","Microsoft Azure","Python","Serverless"],"articleSection":["Business Intelligence"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/b2f.pt\/azure-functions-python\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/b2f.pt\/azure-functions-python\/","url":"https:\/\/b2f.pt\/azure-functions-python\/","name":"Azure Functions com Python: Guia, Modelos e Vantagens","isPartOf":{"@id":"https:\/\/b2f.pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/b2f.pt\/azure-functions-python\/#primaryimage"},"image":{"@id":"https:\/\/b2f.pt\/azure-functions-python\/#primaryimage"},"thumbnailUrl":"https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-computacao-serverless.jpg","datePublished":"2026-02-04T11:11:20+00:00","dateModified":"2026-10-19T12:50:07+00:00","description":"Descubra como utilizar Azure Functions com Python, conhe\u00e7a os modelos v1 e v2, as vantagens da computa\u00e7\u00e3o serverless e os planos de pagamento.","breadcrumb":{"@id":"https:\/\/b2f.pt\/azure-functions-python\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/b2f.pt\/azure-functions-python\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/b2f.pt\/azure-functions-python\/#primaryimage","url":"https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-computacao-serverless.jpg","contentUrl":"https:\/\/b2f.pt\/wp-content\/uploads\/2026\/02\/azure-functions-computacao-serverless.jpg","width":2048,"height":1356,"caption":"Representa\u00e7\u00e3o da computa\u00e7\u00e3o serverless com Azure Functions na plataforma Microsoft Azure."},{"@type":"BreadcrumbList","@id":"https:\/\/b2f.pt\/azure-functions-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/b2f.pt\/"},{"@type":"ListItem","position":2,"name":"Azure Functions &#8211; Mais agilidade, menos complexidade"}]},{"@type":"WebSite","@id":"https:\/\/b2f.pt\/#website","url":"https:\/\/b2f.pt\/","name":"B2F - Business to Future","description":"Retire Conhecimento Dos Seus Dados","publisher":{"@id":"https:\/\/b2f.pt\/#organization"},"alternateName":"B2F","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/b2f.pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/b2f.pt\/#organization","name":"B2F - Business to Future","alternateName":"B2F","url":"https:\/\/b2f.pt\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/b2f.pt\/#\/schema\/logo\/image\/","url":"https:\/\/b2f.pt\/wp-content\/uploads\/2026\/10\/b2f_horizontal_blue_h100px.png","contentUrl":"https:\/\/b2f.pt\/wp-content\/uploads\/2026\/10\/b2f_horizontal_blue_h100px.png","width":276,"height":102,"caption":"B2F - Business to Future"},"image":{"@id":"https:\/\/b2f.pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/businesstofuture\/?locale=pt_PT"]},{"@type":"Person","@id":"https:\/\/b2f.pt\/#\/schema\/person\/53a60449eab118b3e0c1818995da0497","name":"b2f","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/b2f.pt\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/b44a9c116c175f8fb789cb42f4dcedc8051cd52bd25399a21d294fe1f984bbc9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b44a9c116c175f8fb789cb42f4dcedc8051cd52bd25399a21d294fe1f984bbc9?s=96&d=mm&r=g","caption":"b2f"},"sameAs":["https:\/\/b2f.pt"],"url":"https:\/\/b2f.pt\/en\/author\/b2f\/"}]}},"_links":{"self":[{"href":"https:\/\/b2f.pt\/en\/wp-json\/wp\/v2\/posts\/5585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/b2f.pt\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/b2f.pt\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/b2f.pt\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/b2f.pt\/en\/wp-json\/wp\/v2\/comments?post=5585"}],"version-history":[{"count":5,"href":"https:\/\/b2f.pt\/en\/wp-json\/wp\/v2\/posts\/5585\/revisions"}],"predecessor-version":[{"id":5913,"href":"https:\/\/b2f.pt\/en\/wp-json\/wp\/v2\/posts\/5585\/revisions\/5913"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/b2f.pt\/en\/wp-json\/wp\/v2\/media\/5877"}],"wp:attachment":[{"href":"https:\/\/b2f.pt\/en\/wp-json\/wp\/v2\/media?parent=5585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/b2f.pt\/en\/wp-json\/wp\/v2\/categories?post=5585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/b2f.pt\/en\/wp-json\/wp\/v2\/tags?post=5585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}