26 lines
693 B
Python
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")
|