mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-10-21 10:15:04 +02:00
Merge branch '0.1.8b' into feature/accurate-usage-tracking
This commit is contained in:
@@ -91,6 +91,7 @@ async def get_settings(
|
||||
"ams_history_retention_days",
|
||||
"ftp_retry_count",
|
||||
"ftp_retry_delay",
|
||||
"ftp_timeout",
|
||||
"mqtt_port",
|
||||
]:
|
||||
settings_dict[setting.key] = int(setting.value)
|
||||
|
||||
@@ -86,6 +86,7 @@ class AppSettings(BaseModel):
|
||||
ftp_retry_enabled: bool = Field(default=True, description="Enable automatic retry for FTP operations")
|
||||
ftp_retry_count: int = Field(default=3, description="Number of retry attempts for FTP operations (1-10)")
|
||||
ftp_retry_delay: int = Field(default=2, description="Seconds to wait between FTP retry attempts (1-30)")
|
||||
ftp_timeout: int = Field(default=30, description="FTP connection timeout in seconds (10-120)")
|
||||
|
||||
# MQTT Relay settings for publishing events to external broker
|
||||
mqtt_enabled: bool = Field(default=False, description="Enable MQTT event publishing to external broker")
|
||||
@@ -168,6 +169,7 @@ class AppSettingsUpdate(BaseModel):
|
||||
ftp_retry_enabled: bool | None = None
|
||||
ftp_retry_count: int | None = None
|
||||
ftp_retry_delay: int | None = None
|
||||
ftp_timeout: int | None = None
|
||||
mqtt_enabled: bool | None = None
|
||||
mqtt_broker: str | None = None
|
||||
mqtt_port: int | None = None
|
||||
|
||||
@@ -76,18 +76,6 @@ class PrintScheduler:
|
||||
if item.scheduled_time and item.scheduled_time > datetime.utcnow():
|
||||
continue
|
||||
|
||||
# Safety: Skip stale items (older than 24 hours) to prevent phantom reprints
|
||||
# This protects against items that got stuck in "pending" status due to
|
||||
# crashes/restarts after the print already started
|
||||
stale_threshold = timedelta(hours=24)
|
||||
if item.created_at and datetime.utcnow() - item.created_at.replace(tzinfo=None) > stale_threshold:
|
||||
logger.warning(f"Queue item {item.id} is stale (created {item.created_at}), marking as expired")
|
||||
item.status = "expired"
|
||||
item.error_message = "Queue item expired - older than 24 hours"
|
||||
item.completed_at = datetime.utcnow()
|
||||
await db.commit()
|
||||
continue
|
||||
|
||||
# Skip items that require manual start
|
||||
if item.manual_start:
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user