Nach Abschluss der Hintergrundaufgabe auf eine andere Webseite umleiten
Posted: 28 Dec 2024, 17:57
Ich habe einen Endpunkt, der einen Prozess in FastAPI auslöst. Der Vorgang dauert mehrere Minuten und erstellt eine CSV-Datei, die später von Benutzern heruntergeladen werden kann.
Wie kann ich eine Meldung zurückgeben, dass der Prozess ausgeführt wird, und die Benutzer zum „ umleiten? Seite „Herunterladen“ nachdem der Vorgang abgeschlossen ist?
Bisher gebe ich eine HTML-Antwort zurück, die auf die Seite „Herunterladen“ verweist, aber wenn der Benutzer darauf klickt bevor der Vorgang abgeschlossen ist, erhalten sie möglicherweise nicht die richtigen Ergebnisse:
Ich möchte dieses Setup verbessern, indem ich die Benutzer darüber informiere, dass der Prozess gestartet wurde, und sie nach der erfolgreichen Ausführung von „optimierungsprozess.
Wie kann ich eine Meldung zurückgeben, dass der Prozess ausgeführt wird, und die Benutzer zum „ umleiten? Seite „Herunterladen“ nachdem der Vorgang abgeschlossen ist?
Bisher gebe ich eine HTML-Antwort zurück, die auf die Seite „Herunterladen“ verweist, aber wenn der Benutzer darauf klickt bevor der Vorgang abgeschlossen ist, erhalten sie möglicherweise nicht die richtigen Ergebnisse:
Code: Select all
@router.post("/run")
async def run(background_tasks: BackgroundTasks) -> HTMLResponse:
"""
1. Run model.
2. Retrieve output file.
"""
background_tasks.add_task(optimization_process)
content = """
Generating results:
70%
Visit [url=./get-results]result page[/url] to get the results
"""
return HTMLResponse(content=content)