litellm-mirror/litellm/proxy/queue/rq.py

32 lines
1.1 KiB
Python

import os
import subprocess
import sys
import multiprocessing
from dotenv import load_dotenv
load_dotenv()
def run_rq_worker(redis_url):
command = ["rq", "worker", "--url", redis_url]
subprocess.run(command)
def start_rq_worker_in_background():
# Set OBJC_DISABLE_INITIALIZE_FORK_SAFETY to YES
os.environ["OBJC_DISABLE_INITIALIZE_FORK_SAFETY"] = "YES"
# Check if required environment variables are set
required_vars = ["REDIS_USERNAME", "REDIS_PASSWORD", "REDIS_HOST", "REDIS_PORT"]
missing_vars = [var for var in required_vars if var not in os.environ]
if missing_vars:
print(f"Error: Redis environment variables not set. Please set {', '.join(missing_vars)}.")
sys.exit(1)
# Construct Redis URL
REDIS_URL = f"redis://{os.environ['REDIS_USERNAME']}:{os.environ['REDIS_PASSWORD']}@{os.environ['REDIS_HOST']}:{os.environ['REDIS_PORT']}"
# Run rq worker in a separate process
worker_process = multiprocessing.Process(target=run_rq_worker, args=(REDIS_URL,))
worker_process.start()
if __name__ == "__main__":
start_rq_worker_in_background()