Files
xtts-server/gateway/core/queue_client.py

26 lines
693 B
Python

import redis, uuid, json, time, os
REDIS_HOST = os.environ.get("REDIS_HOST", "redis")
r = redis.Redis(host=REDIS_HOST, port=6379, db=0)
QUEUE="tts_queue"
RESULT="tts_result"
def push_job(data: dict) -> str:
job_id = str(uuid.uuid4())
data["job_id"] = job_id
r.lpush(QUEUE, json.dumps(data))
return job_id
def await_result(job_id: str, timeout=30):
key = f"{RESULT}:{job_id}"
start=time.time()
while time.time()-start < timeout:
data=r.get(key)
if data:
r.delete(key)
obj=json.loads(data)
return bytes.fromhex(obj["audio"]), obj["mime"]
time.sleep(0.1)
raise TimeoutError("Worker antwortet nicht")