fix: fix dramatiq failing ffmpeg task
dev / deploy (push) Successful in 56s

This commit is contained in:
Daniil
2026-05-03 19:59:30 +03:00
parent 0402eeb03c
commit ccb97eba2e
2 changed files with 90 additions and 37 deletions
+38 -1
View File
@@ -2,7 +2,8 @@ from __future__ import annotations
import asyncio
import uuid
from types import SimpleNamespace
from dramatiq.middleware.time_limit import TimeLimitExceeded
from cpv3.infrastructure.storage.types import FileInfo
from cpv3.modules.media import service as media_service
@@ -91,3 +92,39 @@ def test_media_convert_actor_emits_precise_progress_updates(monkeypatch) -> None
(99.0, "Сохранение результата"),
(100.0, "Завершено"),
]
def test_media_convert_actor_marks_job_failed_on_time_limit(monkeypatch) -> None:
sent_events: list[task_service.TaskWebhookEvent] = []
async def fake_convert_to_mp4(
_storage: object,
*,
file_key: str,
out_folder: str,
on_progress,
) -> FileInfo:
_ = (file_key, out_folder, on_progress)
raise TimeLimitExceeded
monkeypatch.setattr(media_service, "convert_to_mp4", fake_convert_to_mp4)
monkeypatch.setattr(task_service, "_run_async", asyncio.run)
monkeypatch.setattr(task_service, "_raise_if_job_cancelled", lambda _job_id: None)
monkeypatch.setattr(task_service, "_get_storage_service", lambda: object())
monkeypatch.setattr(
task_service,
"_send_webhook_event",
lambda _url, event: sent_events.append(event),
)
task_service.media_convert_actor.fn(
job_id=str(uuid.uuid4()),
webhook_url="http://backend.test/api/tasks/webhook/job-1/",
file_key="uploads/source.mkv",
out_folder="projects/1",
output_format="mp4",
)
assert sent_events[-1].status == "FAILED"
assert sent_events[-1].current_message == "Задача превысила лимит времени"
assert sent_events[-1].error_message == "Задача превысила лимит времени"