Handle submit API response safely and avoid 500 crash
This commit is contained in:
@@ -1168,6 +1168,7 @@ def index():
|
|||||||
|
|
||||||
@app.post("/submit")
|
@app.post("/submit")
|
||||||
def submit(url: str = Form(...), package_name: str = Form(""), library: str = Form("auto")):
|
def submit(url: str = Form(...), package_name: str = Form(""), library: str = Form("auto")):
|
||||||
|
try:
|
||||||
ensure_env()
|
ensure_env()
|
||||||
url = url.strip()
|
url = url.strip()
|
||||||
package_name = (package_name or "").strip() or "WebGUI"
|
package_name = (package_name or "").strip() or "WebGUI"
|
||||||
@@ -1189,9 +1190,18 @@ def submit(url: str = Form(...), package_name: str = Form(""), library: str = Fo
|
|||||||
"packageName": package_name,
|
"packageName": package_name,
|
||||||
}])
|
}])
|
||||||
|
|
||||||
jobid = str(resp.get("id", ""))
|
jobid = ""
|
||||||
|
if isinstance(resp, dict):
|
||||||
|
jobid = str(resp.get("id", "")).strip()
|
||||||
|
elif isinstance(resp, (str, int)):
|
||||||
|
jobid = str(resp).strip()
|
||||||
|
elif isinstance(resp, list) and resp and isinstance(resp[0], dict):
|
||||||
|
jobid = str(resp[0].get("id", "")).strip()
|
||||||
|
|
||||||
if not jobid:
|
if not jobid:
|
||||||
return HTMLResponse(render_page(f"Unerwartete Antwort von add_links: {resp}"), status_code=500)
|
msg = f"Unerwartete Antwort von add_links (kein Job-ID): {resp!r}"
|
||||||
|
log_connection(msg)
|
||||||
|
return HTMLResponse(render_page(msg), status_code=502)
|
||||||
|
|
||||||
with lock:
|
with lock:
|
||||||
jobs[jobid] = Job(
|
jobs[jobid] = Job(
|
||||||
@@ -1208,6 +1218,9 @@ def submit(url: str = Form(...), package_name: str = Form(""), library: str = Fo
|
|||||||
t.start()
|
t.start()
|
||||||
|
|
||||||
return RedirectResponse(url="/", status_code=303)
|
return RedirectResponse(url="/", status_code=303)
|
||||||
|
except Exception as e:
|
||||||
|
log_connection(f"Submit-Fehler: {e}")
|
||||||
|
return HTMLResponse(render_page(f"Interner Fehler beim Absenden: {e}"), status_code=500)
|
||||||
|
|
||||||
@app.post("/cancel/{jobid}")
|
@app.post("/cancel/{jobid}")
|
||||||
def cancel(jobid: str):
|
def cancel(jobid: str):
|
||||||
|
|||||||
Reference in New Issue
Block a user