mirror of
https://github.com/TheSmallHanCat/sora2api.git
synced 2026-02-15 19:14:44 +08:00
fix: 修复管理配置更新缺失字段及日志状态更新机制
- 修复update_admin_config方法未更新task_retry_enabled、task_max_retries、auto_disable_on_401字段的问题 - 新增finally块确保请求日志在异常情况下也能正确更新状态,避免卡在status_code=-1
This commit is contained in:
@@ -1010,9 +1010,12 @@ class Database:
|
|||||||
async with aiosqlite.connect(self.db_path) as db:
|
async with aiosqlite.connect(self.db_path) as db:
|
||||||
await db.execute("""
|
await db.execute("""
|
||||||
UPDATE admin_config
|
UPDATE admin_config
|
||||||
SET admin_username = ?, admin_password = ?, api_key = ?, error_ban_threshold = ?, updated_at = CURRENT_TIMESTAMP
|
SET admin_username = ?, admin_password = ?, api_key = ?, error_ban_threshold = ?,
|
||||||
|
task_retry_enabled = ?, task_max_retries = ?, auto_disable_on_401 = ?,
|
||||||
|
updated_at = CURRENT_TIMESTAMP
|
||||||
WHERE id = 1
|
WHERE id = 1
|
||||||
""", (config.admin_username, config.admin_password, config.api_key, config.error_ban_threshold))
|
""", (config.admin_username, config.admin_password, config.api_key, config.error_ban_threshold,
|
||||||
|
config.task_retry_enabled, config.task_max_retries, config.auto_disable_on_401))
|
||||||
await db.commit()
|
await db.commit()
|
||||||
|
|
||||||
# Proxy config operations
|
# Proxy config operations
|
||||||
|
|||||||
@@ -521,6 +521,7 @@ class GenerationHandler:
|
|||||||
task_id = None
|
task_id = None
|
||||||
is_first_chunk = True # Track if this is the first chunk
|
is_first_chunk = True # Track if this is the first chunk
|
||||||
log_id = None # Initialize log_id
|
log_id = None # Initialize log_id
|
||||||
|
log_updated = False # Track if log has been updated
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Create initial log entry BEFORE submitting task to upstream
|
# Create initial log entry BEFORE submitting task to upstream
|
||||||
@@ -680,6 +681,7 @@ class GenerationHandler:
|
|||||||
status_code=200,
|
status_code=200,
|
||||||
duration=duration
|
duration=duration
|
||||||
)
|
)
|
||||||
|
log_updated = True # Mark log as updated
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# Release lock for image generation on error
|
# Release lock for image generation on error
|
||||||
@@ -727,6 +729,7 @@ class GenerationHandler:
|
|||||||
status_code=status_code,
|
status_code=status_code,
|
||||||
duration=duration
|
duration=duration
|
||||||
)
|
)
|
||||||
|
log_updated = True # Mark log as updated
|
||||||
else:
|
else:
|
||||||
# Generic error
|
# Generic error
|
||||||
await self.db.update_request_log(
|
await self.db.update_request_log(
|
||||||
@@ -735,12 +738,35 @@ class GenerationHandler:
|
|||||||
status_code=500,
|
status_code=500,
|
||||||
duration=duration
|
duration=duration
|
||||||
)
|
)
|
||||||
|
log_updated = True # Mark log as updated
|
||||||
# Wrap exception with token_id information
|
# Wrap exception with token_id information
|
||||||
if token_obj:
|
if token_obj:
|
||||||
raise GenerationError(str(e), token_id=token_obj.id)
|
raise GenerationError(str(e), token_id=token_obj.id)
|
||||||
else:
|
else:
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
|
finally:
|
||||||
|
# Ensure log is updated even if exception handling fails
|
||||||
|
# This prevents logs from being stuck at status_code = -1
|
||||||
|
if log_id and not log_updated:
|
||||||
|
try:
|
||||||
|
# Log was not updated in try or except blocks, update it now
|
||||||
|
duration = time.time() - start_time
|
||||||
|
await self.db.update_request_log(
|
||||||
|
log_id,
|
||||||
|
response_body=json.dumps({"error": "Task failed or interrupted during processing"}),
|
||||||
|
status_code=500,
|
||||||
|
duration=duration
|
||||||
|
)
|
||||||
|
debug_logger.log_info(f"Updated stuck log entry {log_id} from status -1 to 500 in finally block")
|
||||||
|
except Exception as finally_error:
|
||||||
|
# Don't let finally block errors break the flow
|
||||||
|
debug_logger.log_error(
|
||||||
|
error_message=f"Failed to update log in finally block: {str(finally_error)}",
|
||||||
|
status_code=500,
|
||||||
|
response_text=str(finally_error)
|
||||||
|
)
|
||||||
|
|
||||||
async def handle_generation_with_retry(self, model: str, prompt: str,
|
async def handle_generation_with_retry(self, model: str, prompt: str,
|
||||||
image: Optional[str] = None,
|
image: Optional[str] = None,
|
||||||
video: Optional[str] = None,
|
video: Optional[str] = None,
|
||||||
|
|||||||
Reference in New Issue
Block a user