You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.9 KiB
67 lines
1.9 KiB
#!/usr/bin/env python3
|
|
"""
|
|
Local macOS Audio Worker — runs outside Docker so macOS 'say' works.
|
|
"""
|
|
|
|
import os
|
|
import subprocess
|
|
from dotenv import load_dotenv
|
|
|
|
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
ENV_FILE = os.path.join(BASE_DIR, ".env")
|
|
|
|
# Load .env if present
|
|
if os.path.exists(ENV_FILE):
|
|
load_dotenv(ENV_FILE)
|
|
print(f"[AUDIO-LOCAL] Loaded .env from {ENV_FILE}")
|
|
else:
|
|
print("[AUDIO-LOCAL] WARNING: no .env found")
|
|
|
|
|
|
def main():
|
|
print("=====================================================")
|
|
print(" LOCAL macOS AUDIO WORKER")
|
|
print(" Queue : audio")
|
|
print(" Voice :", os.getenv("AUDIO_VOICE"))
|
|
print(" Rate :", os.getenv("AUDIO_RATE"))
|
|
print("=====================================================")
|
|
|
|
# ----------------------------------------------------------
|
|
# OVERRIDES: Local Redis instead of Docker internal hostname
|
|
# ----------------------------------------------------------
|
|
broker = os.getenv("REDIS_BROKER_LOCAL", "redis://127.0.0.1:6379/0")
|
|
backend = os.getenv("REDIS_BACKEND_LOCAL", "redis://127.0.0.1:6379/1")
|
|
|
|
os.environ["CELERY_BROKER_URL"] = broker
|
|
os.environ["CELERY_RESULT_BACKEND"] = backend
|
|
|
|
print(f"[AUDIO-LOCAL] Using Redis broker : {broker}")
|
|
print(f"[AUDIO-LOCAL] Using Redis backend: {backend}")
|
|
|
|
# ----------------------------------------------------------
|
|
# Celery command
|
|
# macOS requires prefork pool, and we use a single-line list.
|
|
# ----------------------------------------------------------
|
|
cmd = [
|
|
"celery",
|
|
"-A",
|
|
"celery_app",
|
|
"worker",
|
|
"-Q",
|
|
"audio",
|
|
"-n",
|
|
"audio_local@%h",
|
|
"-l",
|
|
"INFO",
|
|
"--pool=prefork",
|
|
"--concurrency=2",
|
|
]
|
|
|
|
print("[AUDIO-LOCAL] Launching Celery via subprocess…")
|
|
|
|
subprocess.run(cmd, check=False)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|