Chandima Prabhath commited on
Commit
15909e3
·
1 Parent(s): 7cdd60d

Enhance job initialization and progress tracking; update .gitignore to exclude cache directories

Browse files
.gitignore CHANGED
@@ -1 +1,4 @@
1
  .env
 
 
 
 
1
  .env
2
+ video_encoder/__pycache__
3
+ video_encoder/worker/__pycache__
4
+ video_encoder/api/__pycache__
video_encoder/api/main.py CHANGED
@@ -9,7 +9,7 @@ from datetime import datetime
9
  from rq import Queue
10
  from redis import from_url
11
  from ..config import EncodingConfig, RedisConfig
12
- from video_encoder.worker.tasks import encode_video_task
13
  import logging
14
 
15
  logger = logging.getLogger(__name__)
@@ -39,6 +39,7 @@ async def upload_video(file: UploadFile):
39
  f.write(await file.read())
40
 
41
  logger.info(f"Enqueuing job {job_id} for file {file.filename}")
 
42
  q.enqueue(encode_video_task, job_id, input_path)
43
 
44
  return JSONResponse(
 
9
  from rq import Queue
10
  from redis import from_url
11
  from ..config import EncodingConfig, RedisConfig
12
+ from video_encoder.worker.tasks import encode_video_task, init_job
13
  import logging
14
 
15
  logger = logging.getLogger(__name__)
 
39
  f.write(await file.read())
40
 
41
  logger.info(f"Enqueuing job {job_id} for file {file.filename}")
42
+ init_job(job_id)
43
  q.enqueue(encode_video_task, job_id, input_path)
44
 
45
  return JSONResponse(
video_encoder/worker/tasks.py CHANGED
@@ -8,11 +8,19 @@ from pathlib import Path
8
  from typing import Optional
9
  from .ffmpeg import FFmpegEncoder
10
  from ..config import EncodingConfig
 
11
 
12
  logger = logging.getLogger(__name__)
13
 
14
  q = Queue(connection=RedisConfig.get_connection(), default_timeout=3600)
15
 
 
 
 
 
 
 
 
16
  def update_job_progress(job_id: str, progress: float):
17
  logger.info(f"Updating progress for job {job_id} to {progress}")
18
  RedisConfig.get_connection().hset(f"job:{job_id}", "progress", progress)
 
8
  from typing import Optional
9
  from .ffmpeg import FFmpegEncoder
10
  from ..config import EncodingConfig
11
+ from datetime import datetime
12
 
13
  logger = logging.getLogger(__name__)
14
 
15
  q = Queue(connection=RedisConfig.get_connection(), default_timeout=3600)
16
 
17
+ def init_job(job_id: str):
18
+ RedisConfig.get_connection().hset(f"job:{job_id}", mapping={
19
+ "progress": 0.0,
20
+ "status": "queued",
21
+ "created_at": datetime.now().isoformat()
22
+ })
23
+
24
  def update_job_progress(job_id: str, progress: float):
25
  logger.info(f"Updating progress for job {job_id} to {progress}")
26
  RedisConfig.get_connection().hset(f"job:{job_id}", "progress", progress)
video_encoder/worker/worker.py CHANGED
@@ -2,5 +2,5 @@ from rq import Worker
2
  from video_encoder.config import RedisConfig
3
 
4
  if __name__ == "__main__":
5
- worker = Worker([RedisConfig.QUEUE_NAME], connection=RedisConfig.get_connection())
6
  worker.work()
 
2
  from video_encoder.config import RedisConfig
3
 
4
  if __name__ == "__main__":
5
+ worker = Worker([RedisConfig.QUEUE_NAME], connection=RedisConfig.get_connection(), default_result_ttl=3600)
6
  worker.work()