feat: 添加异常处理以增强数据库保存逻辑

- 在结果处理逻辑中添加try-except块,以捕获保存用户响应到数据库时的异常
- 确保在发生错误时能够打印异常信息,提升系统的稳定性和可调试性
This commit is contained in:
Miu Li 2025-06-16 06:29:46 +08:00
parent ee9e6a5cca
commit e3b3b5a1f6

35
app.py
View File

@ -120,22 +120,25 @@ async def result(request: Request, scale_id: str, db: Session = Depends(get_db))
else: else:
responses[subscale] += int(form_data[str(qid)]) responses[subscale] += int(form_data[str(qid)])
average[subscale] = round(responses[subscale]/len(qids),2) average[subscale] = round(responses[subscale]/len(qids),2)
# Save response to database try:
ip = request.headers.get("X-Forwarded-For", "").split(",")[0].strip() or \ # Save response to database
request.headers.get("X-Real-IP", "") or \ ip = request.headers.get("X-Forwarded-For", "").split(",")[0].strip() or \
request.client.host # Get real IP address considering proxy headers request.headers.get("X-Real-IP", "") or \
location = get_location_from_ip(ip)# Get location information request.client.host # Get real IP address considering proxy headers
db_response = RawResponse( location = get_location_from_ip(ip)# Get location information
scale_id=scale_id, db_response = RawResponse(
user_agent=request.headers.get("user-agent", "Unknown"), scale_id=scale_id,
ip_address=ip, user_agent=request.headers.get("user-agent", "Unknown"),
location=json.dumps(location) if location else None, ip_address=ip,
raw_response=dict(form_data), location=json.dumps(location) if location else None,
sum_response=responses, raw_response=dict(form_data),
avg_response=average sum_response=responses,
) avg_response=average
db.add(db_response) )
db.commit() db.add(db_response)
db.commit()
except Exception as e:
print(e)
return templates.TemplateResponse("result.html", { return templates.TemplateResponse("result.html", {
"request": request, "request": request,
"responses": responses, "responses": responses,