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ảnDjangoBì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