V tomto článku se dozvíte, jak používat Python aplikace v hostiteli .NET Aspire aplikací. Příklad aplikace v tomto článku demonstruje spuštění Python aplikace. Rozšíření Python pro .NET Aspire vyžaduje použití virtuálních prostředí.
Požadavky
Pokud chcete pracovat s .NET.NET Aspire, potřebujete místně nainstalovat následující:
Kromě toho je potřeba na počítač nainstalovat Python. Ukázková aplikace v tomto článku byla vytvořena s Python verze 3.12.4 a pip verze 24.1.2. Pokud chcete ověřit verze Python a pip, spusťte následující příkazy:
python --version
pip --version
Pokud chcete stáhnout Python (včetně pip), podívejte se na stránku ke stažení Python.
Vytvoření .NET.NET Aspire projektu pomocí šablony
Pokud chcete začít s spuštěním projektu Python v .NET Aspire nejprve pomocí úvodní šablony vytvořte hostitele aplikace .NET Aspire:
dotnet new aspire -o PythonSample
Ve stejné relaci terminálu změňte adresáře na nově vytvořený projekt:
cd PythonSample
Po vytvoření šablony spusťte hostitele aplikace pomocí následujícího příkazu, který zajistí úspěšné spuštění hostitele aplikace a řídicího panelu .NET.NET Aspire:
dotnet run --project PythonSample.AppHost/PythonSample.AppHost.csproj
Jakmile se hostitel aplikace spustí, měl by být možné kliknout na odkaz řídicího panelu ve výstupu konzoly. V tomto okamžiku řídicí panel nezobrazí žádné prostředky. Zastavte hostitele aplikace stisknutím klávesy Ctrl + C v terminálu.
Příprava aplikace Python
Z předchozí relace terminálu, ve které jste vytvořili řešení .NET Aspire, vytvořte nový adresář, který bude obsahovat Python zdrojový kód.
mkdir hello-python
Přejděte do nově vytvořeného adresáře hello-python:
cd hello-python
Inicializace virtuálního prostředí Python
Aby bylo možné pracovat s Python aplikacemi, musí být ve virtuálním prostředí. Pokud chcete vytvořit virtuální prostředí, spusťte následující příkaz:
Spuštěním následujícího příkazu se ujistěte, že pip v rámci virtuálního prostředí up-to-date:
python -m pip install --upgrade pip
Instalace balíčků Python
Nainstalujte balíček Flask vytvořením souboru requirements.txt v adresáři hello-python a přidáním následujícího řádku:
Flask==3.0.3
Potom nainstalujte balíček Flask spuštěním následujícího příkazu:
python -m pip install -r requirements.txt
Po instalaci Flasku vytvořte nový soubor s názvem main.py v adresáři hello-python a přidejte následující kód:
import os
import flask
app = flask.Flask(__name__)
@app.route('/', methods=['GET'])
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
port = int(os.environ.get('PORT', 8111))
app.run(host='0.0.0.0', port=port)
Předchozí kód vytvoří jednoduchou aplikaci Flask, která naslouchá na portu 8111 a vrátí zprávu "Hello, World!" při přístupu ke kořenovému koncovému bodu.
Aktualizace hostitelského projektu aplikace
Nainstalujte balíček hostování Python spuštěním následujícího příkazu:
Aktualizujte soubor hostitele aplikace Program.cs tak, aby zahrnoval projekt Python, zavoláním rozhraní API AddPythonApp a zadáním názvu projektu, cesty k projektu a souboru vstupního bodu:
using Microsoft.Extensions.Hosting;
var builder = DistributedApplication.CreateBuilder(args);
#pragma warning disable ASPIREHOSTINGPYTHON001
var pythonapp = builder.AddPythonApp("hello-python", "../hello-python", "main.py")
.WithHttpEndpoint(env: "PORT")
.WithExternalHttpEndpoints()
.WithOtlpExporter();
#pragma warning restore ASPIREHOSTINGPYTHON001
if (builder.ExecutionContext.IsRunMode && builder.Environment.IsDevelopment())
{
pythonapp.WithEnvironment("DEBUG", "True");
}
builder.Build().Run();
Důležité
Rozhraní API AddPythonApp je experimentální a v budoucích verzích se může změnit. Další informace naleznete v tématu ASPIREHOSTINGPYTHON001.
Spuštění aplikace
Teď, když jste přidali balíček hostování Python, aktualizovali hostitele aplikace Program.cs soubor a vytvořili Python projekt, můžete spustit hostitele aplikace:
dotnet run --project ../PythonSample.AppHost/PythonSample.AppHost.csproj
Spusťte řídicí panel kliknutím na odkaz ve výstupu konzoly. Řídicí panel by měl zobrazit projekt Python jako zdroj.
řídicí panel
Výběrem odkazu Koncové body otevřete koncový bod hello-python na nové kartě prohlížeče. Prohlížeč by měl zobrazit zprávu "Hello, World!":
řídicí panel
Zastavte hostitele aplikace stisknutím klávesy Ctrl + C v terminálu.
Přidání podpory telemetrie
Pokud chcete přidat trochu sledovatelnosti, přidejte telemetrii, která pomáhá sledovat závislou Python aplikaci. V projektu Python přidejte do souboru OpenTelemetry následující balíček jako závislost:
Předchozí aktualizace požadavku přidá balíček OpenTelemetry a vývozce OTLP. Potom znovu nainstalujte požadavky aplikace Python do virtuálního prostředí spuštěním následujícího příkazu:
python -m pip install -r requirements.txt
Předchozí příkaz nainstaluje balíček OpenTelemetry a vývozce OTLP ve virtuálním prostředí. Aktualizujte Python aplikaci tak, aby zahrnovala kód OpenTelemetry, a nahraďte stávající kód main.py následujícím kódem:
import os
import logging
import flask
from opentelemetry import trace
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.instrumentation.flask import FlaskInstrumentor
app = flask.Flask(__name__)
trace.set_tracer_provider(TracerProvider())
otlpExporter = OTLPSpanExporter()
processor = BatchSpanProcessor(otlpExporter)
trace.get_tracer_provider().add_span_processor(processor)
FlaskInstrumentor().instrument_app(app)
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
@app.route('/', methods=['GET'])
def hello_world():
logger.info("request received!")
return 'Hello, World!'
if __name__ == '__main__':
port = int(os.environ.get('PORT', 8111))
debug = bool(os.environ.get('DEBUG', False))
host = os.environ.get('HOST', '127.0.0.1')
app.run(port=port, debug=debug, host=host)
Aktualizujte projekt hostování aplikace launchSettingsjson soubor tak, aby obsahoval proměnnou prostředí ASPIRE_ALLOW_UNSECURED_TRANSPORT:
Proměnná ASPIRE_ALLOW_UNSECURED_TRANSPORT je povinná, protože při místním spuštění OpenTelemetryclient v Python odmítne místní vývojový certifikát. Znovu spusťte hostitele aplikace :
dotnet run --project ../PythonSample.AppHost/PythonSample.AppHost.csproj
Po spuštění hostitele aplikace přejděte na řídicí panel a všimněte si, že kromě výstupu protokolu konzoly se strukturované protokolování směruje také na řídicí panel.
řídicí panel
Shrnutí
I když existuje několik aspektů nad rámec tohoto článku, naučili jste se vytvářet .NET Aspire řešení, které se integruje s Python. Dozvěděli jste se také, jak používat rozhraní API AddPythonApp k hostování Python aplikací.
Zdroj tohoto obsahu najdete na GitHubu, kde můžete také vytvářet a kontrolovat problémy a žádosti o přijetí změn. Další informace najdete v našem průvodci pro přispěvatele.
Zpětná vazba k produktu .NET Aspire
.NET Aspire je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby:
Manage data ingestion and preparation, model training and deployment, and machine learning solution monitoring with Python, Azure Machine Learning and MLflow.