Chức năng Python Flask Azure

Các tiện ích mở rộng Công cụ Azure cho Visual Studio Code giúp dễ dàng triển khai các ứng dụng Python [bao gồm cả bộ chứa] cho Dịch vụ ứng dụng Azure và triển khai mã serverless cho các Chức năng Azure

hướng dẫn triển khai

Các hướng dẫn sau đây trên Trung tâm dành cho nhà phát triển Python Azure hướng dẫn bạn các chi tiết

Hướng dẫnMô tảCông cụ liên quanTriển khai ứng dụng web Python sang Dịch vụ ứng dụng AzureTriển khai một ứng dụng web đơn giảnDjango
Bình giữ nhiệt
Azure CLI
Dịch vụ ứng dụng Azure
Công cụ AzureTriển khai ứng dụng web Python với cơ sở dữ liệu sang Dịch vụ ứng dụng AzureTriển khai ứng dụng web với cơ sở dữ liệu PostgreSQLDjango
Bình giữ nhiệt
PostgreSQL
Dịch vụ ứng dụng Azure
Công cụ AzureTriển khai bộ chứa Python sang Dịch vụ ứng dụng AzureTriển khai bộ chứa DockerDocker
Dịch vụ ứng dụng Azure
Công cụ AzureTriển khai các hàm Python sang AzureTriển khai mã không có máy chủ với các hàm Azure
Hàm Azure
Công cụ Azure

12/10/2022

Gần đây, Microsoft đã giới thiệu một cách tiếp cận dựa trên trình trang trí để phát triển các hàm dựa trên Python. Khái niệm này rất giống với cách tiếp cận mà FastAPI tuân theo. Vì vậy, những gì đã thay đổi?

⚠️ Mô hình lập trình V2 hiện đang được xem trước công khai. Một số thứ vẫn có thể thay đổi, vì vậy các tính năng được mô tả ở đây chưa nên được sử dụng trong sản xuất. Ngoài ra, không phải tất cả các loại trình kích hoạt đều được hỗ trợ đầy đủ tại thời điểm này

Mô hình lập trình V1

Với mô hình lập trình v1, mỗi trigger của hàm gồm 2 file

  • hàm số. json

    • Đây là một tệp cấu hình xác định, trong số những thứ khác, loại trình kích hoạt của chức năng và cách dữ liệu được liên kết
  • __trong đó__. py

    • Chứa mã thực tế của hàm và phải khớp với hàm. json [chẳng hạn như tên của các biến đầu vào hoặc đầu ra được xác định trong hàm. json]

Ví dụ: Hàm HTTP Azure trông như thế này

hàm số. json

{
    "scriptFile": "__init__.py",
    "bindings": [
        {
            "authLevel": "function",
            "type": "httpTrigger",
            "direction": "in",
            "name": "req",
            "methods": [
                "get",
                "post"
            ]
        },
        {
            "type": "http",
            "direction": "out",
            "name": "$return"
        }
    ]
}

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

__trong đó__. py

import azure.functions


def main[req: azure.functions.HttpRequest] -> str:
    user = req.params.get['user']
    return f'Hello, {user}!'

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Mô hình lập trình V2

Như bạn có thể thấy trong mô hình lập trình V1, đối với mỗi trình kích hoạt, cần có hai tệp, một tệp là cấu hình của trình kích hoạt và tệp còn lại là mã thực tế. Điều này đã thay đổi với mô hình lập trình V2, thông tin cấu hình hiện có thể được đặt trực tiếp vào mã thông qua trình trang trí

Ví dụ: Hàm HTTP Azure trông như thế này

import azure.functions

@app.function_name[name="HttpTrigger1"]
@app.route[route="req"]

def main[req: azure.functions.HttpRequest] -> str:
    user = req.params.get['user']
    return f'Hello, {user}!'

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Trình kích hoạt hiện có thể được định cấu hình thông qua trang trí. Các loại thuộc tính, cả đầu vào và đầu ra, có thể được chỉ định thông qua các chú thích loại

Hiện tại, các trình kích hoạt và liên kết sau được hỗ trợ

TypeTriggerInputOutputHTTP✅Timer✅Azure Queue Storage✅✅Azure Service Bus topic✅✅Azure Service Bus queue✅✅Azure Comos DB✅✅✅Azure Blob Storage✅✅✅Azure Hub✅✅

ℹ️ Như bạn có thể thấy ở đây, không phải tất cả các trình kích hoạt và liên kết đều được hỗ trợ nhưng Microsoft sẽ cung cấp chúng sau. Nếu loại mong muốn của bạn chưa được liệt kê, bạn phải ở lại với mô hình lập trình V1
Để biết tổng quan cập nhật về tất cả các loại được hỗ trợ, vui lòng xem liên kết này

Như bạn đã thấy, mô hình lập trình mới V2 dẫn đến cấu trúc tệp đơn giản hơn và cách tiếp cận dựa trên mã nhiều hơn. Một tính năng thú vị khác được giới thiệu là các bản thiết kế

Trong trường hợp bạn đã quen với FastAPI, các bản thiết kế có thể nhắc bạn về chức năng của bộ định tuyến FastAPI. Blueprint cho phép chia Chức năng Azure thành nhiều mô-đun và cũng để tạo các giao diện có thể được sử dụng lại trong các dự án khác

import logging 

import azure.functions as func 

bp = func.Blueprint[] 

@bp.route[route="default_template"] 
def default_template[req: func.HttpRequest] -> func.HttpResponse: 
    logging.info['Python HTTP trigger function processed a request.'] 

    name = req.params.get['name'] 
    if not name: 
        try: 
            req_body = req.get_json[] 
        except ValueError: 
            pass 
        else: 
            name = req_body.get['name'] 

    if name: 
        return func.HttpResponse[ 
            f"Hello, {name}. This HTTP-triggered function " 
            f"executed successfully."] 
    else: 
        return func.HttpResponse[ 
            "This HTTP-triggered function executed successfully. " 
            "Pass a name in the query string or in the request body for a" 
            " personalized response.", 
            status_code=200 
        ]

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Kế hoạch chi tiết này sau đó chỉ cần được nhập và đăng ký

import azure.functions as func 
from http_blueprint import bp

app = func.FunctionApp[] 

app.register_functions[bp]

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Một tính năng độc đáo của các chức năng Azure kết hợp với Python là việc sử dụng các khung web tương thích với ASGI và WSGI, chẳng hạn như FastAPI hoặc Flask. Điều này đã có thể thực hiện được với mô hình lập trình V1 và cũng được duy trì tại đây

ASGI [API nhanh]

# function_app.py

import azure.functions as func 
from fastapi import FastAPI, Request, Response 

fast_app = FastAPI[] 

@fast_app.get["/return_http_no_body"] 
async def return_http_no_body[]: 
    return Response[content='', media_type="text/plain"] 

app = func.AsgiFunctionApp[app=fast_app, 
                           http_auth_level=func.AuthLevel.ANONYMOUS]

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

WSGI [Bình]

# function_app.py

import azure.functions as func 
from flask import Flask, request, Response, redirect, url_for 

flask_app = Flask[__name__] 
logger = logging.getLogger["my-function"] 

@flask_app.get["/return_http"] 
def return_http[]: 
    return Response['

Hello World™

'
, mimetype='text/html'] app = func.WsgiFunctionApp[app=flask_app.wsgi_app, http_auth_level=func.AuthLevel.ANONYMOUS]

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Phần kết luận

Đây là những điểm nổi bật của tôi về mô hình lập trình V2 cho Python Azure Functions. Mặc dù tính năng này vẫn ở dạng xem trước, nhưng tôi thấy những thay đổi này vô cùng thú vị vì chúng cho phép chúng tôi phát triển Hàm Azure theo cách tiếp cận dựa trên mã nhiều hơn, tương tự như FastAPI

Tôi có thể viết hàm Azure bằng Python không?

Trong phần này, bạn sử dụng Visual Studio Code để tạo dự án Hàm Azure cục bộ bằng Python . Ở phần sau của bài viết này, bạn sẽ xuất bản mã chức năng của mình lên Azure. Chọn biểu tượng Azure trong thanh Hoạt động. Sau đó, trong khu vực Không gian làm việc [cục bộ], chọn nút +, chọn Tạo chức năng trong danh sách thả xuống.

Làm cách nào để cài đặt gói Python trong chức năng Azure?

Làm thế nào để. Cài đặt mô-đun trong hàm Python Azure .
Bây giờ hãy đăng ký hoặc tạo tài khoản Azure mới trong Chức năng Azure
Nhấp vào tạo một chức năng mới, chọn Python và chọn môi trường Python của bạn
Sau đó chọn trình kích hoạt của bạn. .
Khi dự án của bạn được tạo, nhấp vào thiết bị đầu cuối, sau đó nhấp vào thiết bị đầu cuối mới. .
Và đó là nó

Các hàm Azure có thể hoạt động như một web hook không?

Các hàm Azure có thể được gọi thông qua yêu cầu HTTP để xây dựng API phi máy chủ và phản hồi webhook .

Chủ Đề