Skip to content

Commit 49dd773

Browse files
authored
fix: configure failure_ttl for RQ failed jobs (#101)
fix: configure failure_ttl for RQ failed jobs Signed-off-by: Pawel Rein <pawel.rein@prezi.com>
1 parent a4edcc3 commit 49dd773

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

docling_jobkit/orchestrators/rq/orchestrator.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
class RQOrchestratorConfig(BaseModel):
3333
redis_url: str = "redis://localhost:6379/"
3434
results_ttl: int = 3_600 * 4
35+
failure_ttl: int = 3_600 * 4
3536
results_prefix: str = "docling:results"
3637
sub_channel: str = "docling:updates"
3738
scratch_dir: Optional[Path] = None
@@ -63,6 +64,7 @@ def make_rq_queue(config: RQOrchestratorConfig) -> tuple[redis.Redis, Queue]:
6364
connection=conn,
6465
default_timeout=14400,
6566
result_ttl=config.results_ttl,
67+
failure_ttl=config.failure_ttl,
6668
)
6769
_log.info(
6870
f"RQ Redis connection pool initialized with max_connections="
@@ -144,6 +146,7 @@ async def enqueue(
144146
kwargs={"task_data": task_data},
145147
job_id=task_id,
146148
timeout=14400,
149+
failure_ttl=self.config.failure_ttl,
147150
)
148151
await self.init_task_tracking(task)
149152

tests/test_failure_ttl.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
"""Tests for RQ failure_ttl configuration."""
2+
3+
from docling_jobkit.orchestrators.rq.orchestrator import RQOrchestratorConfig
4+
5+
6+
class TestFailureTTLConfig:
7+
def test_default_failure_ttl_matches_results_ttl(self):
8+
config = RQOrchestratorConfig()
9+
assert config.failure_ttl == config.results_ttl
10+
assert config.failure_ttl == 3_600 * 4
11+
12+
def test_failure_ttl_is_configurable(self):
13+
config = RQOrchestratorConfig(failure_ttl=7200)
14+
assert config.failure_ttl == 7200
15+
16+
def test_failure_ttl_passed_to_queue(self):
17+
config = RQOrchestratorConfig(
18+
redis_url="redis://localhost:6379/",
19+
failure_ttl=1800,
20+
)
21+
try:
22+
_, _rq_queue = RQOrchestratorConfig.model_validate(config.model_dump())
23+
except Exception:
24+
pass
25+
assert config.failure_ttl == 1800

0 commit comments

Comments
 (0)