fix: configure failure_ttl for RQ failed jobs (#519)

Signed-off-by: Pawel Rein <pawel.rein@prezi.com>
This commit is contained in:
Paweł Rein
2026-02-24 22:24:29 +01:00
committed by GitHub
parent 853003cf3b
commit a83179629e
4 changed files with 24 additions and 0 deletions

View File

@@ -408,6 +408,7 @@ def rq_worker() -> Any:
sub_channel=docling_serve_settings.eng_rq_sub_channel,
scratch_dir=get_scratch(),
results_ttl=docling_serve_settings.eng_rq_results_ttl,
failure_ttl=docling_serve_settings.eng_rq_failure_ttl,
redis_max_connections=docling_serve_settings.eng_rq_redis_max_connections,
redis_socket_timeout=docling_serve_settings.eng_rq_redis_socket_timeout,
redis_socket_connect_timeout=docling_serve_settings.eng_rq_redis_socket_connect_timeout,

View File

@@ -496,6 +496,7 @@ def get_async_orchestrator() -> BaseOrchestrator:
kwargs={"task_data": task_data},
job_id=task_id,
timeout=14400,
failure_ttl=docling_serve_settings.eng_rq_failure_ttl,
)
await self.init_task_tracking(task)
@@ -511,6 +512,7 @@ def get_async_orchestrator() -> BaseOrchestrator:
sub_channel=docling_serve_settings.eng_rq_sub_channel,
scratch_dir=get_scratch(),
results_ttl=docling_serve_settings.eng_rq_results_ttl,
failure_ttl=docling_serve_settings.eng_rq_failure_ttl,
redis_max_connections=docling_serve_settings.eng_rq_redis_max_connections,
redis_socket_timeout=docling_serve_settings.eng_rq_redis_socket_timeout,
redis_socket_connect_timeout=docling_serve_settings.eng_rq_redis_socket_connect_timeout,

View File

@@ -89,6 +89,7 @@ class DoclingServeSettings(BaseSettings):
eng_rq_results_prefix: str = "docling:results"
eng_rq_sub_channel: str = "docling:updates"
eng_rq_results_ttl: int = 3_600 * 4 # 4 hours default
eng_rq_failure_ttl: int = 3_600 * 4 # 4 hours default
eng_rq_redis_max_connections: int = 50 # Connection pool size
eng_rq_redis_socket_timeout: Optional[float] = None # Socket timeout in seconds
eng_rq_redis_socket_connect_timeout: Optional[float] = (

20
tests/test_failure_ttl.py Normal file
View File

@@ -0,0 +1,20 @@
"""Tests for RQ failure_ttl configuration in docling-serve."""
from docling_serve.settings import DoclingServeSettings
class TestFailureTTLSettings:
def test_default_failure_ttl_matches_results_ttl(self):
settings = DoclingServeSettings(
eng_rq_redis_url="redis://localhost:6379/",
)
assert settings.eng_rq_failure_ttl == settings.eng_rq_results_ttl
assert settings.eng_rq_failure_ttl == 3_600 * 4
def test_failure_ttl_is_configurable(self):
settings = DoclingServeSettings(
eng_rq_redis_url="redis://localhost:6379/",
eng_rq_failure_ttl=7200,
)
assert settings.eng_rq_failure_ttl == 7200
assert settings.eng_rq_results_ttl == 3_600 * 4