update 20250403
This commit is contained in:
+30
-2
@@ -23,6 +23,10 @@ REDIS_CHAT_DB = int(os.getenv('REDIS_CHAT_DB'))
|
||||
REDIS_PASSWORD = os.getenv('REDIS_PASSWORD')
|
||||
REDIS_TASK_DB = int(os.getenv('REDIS_TASK_DB'))
|
||||
|
||||
OLLAMA_URL = os.getenv('OLLAMA_URL')
|
||||
OLLAMA_URLS = os.getenv('OLLAMA_URLS', OLLAMA_URL).split(',') # 兼容旧配置
|
||||
OLLAMA_TIMEOUT = int(os.getenv('OLLAMA_TIMEOUT', 10))
|
||||
|
||||
# 创建Redis客户端
|
||||
redis_client = redis.Redis(
|
||||
host=REDIS_HOST,
|
||||
@@ -51,6 +55,21 @@ def create_kafka_consumer():
|
||||
value_deserializer=lambda x: json.loads(x.decode('utf-8'))
|
||||
)
|
||||
|
||||
async def try_ollama_request(url, data):
|
||||
"""尝试向单个 Ollama API 发送请求"""
|
||||
try:
|
||||
response = requests.post(
|
||||
f"{url}/api/generate",
|
||||
json=data,
|
||||
stream=True,
|
||||
timeout=OLLAMA_TIMEOUT
|
||||
)
|
||||
response.raise_for_status()
|
||||
return response
|
||||
except Exception as e:
|
||||
print(f"API {url} 请求失败: {str(e)}")
|
||||
return None
|
||||
|
||||
async def process_chat_request(chat_request):
|
||||
try:
|
||||
task_id = chat_request['task_id']
|
||||
@@ -77,9 +96,17 @@ async def process_chat_request(chat_request):
|
||||
"temperature": 0
|
||||
}
|
||||
|
||||
response = requests.post("https://ffgregevrdcfyhtnhyudvr.myfastools.com/api/generate", json=data, stream=True)
|
||||
response.raise_for_status()
|
||||
# 尝试所有可用的 API 地址
|
||||
response = None
|
||||
for url in OLLAMA_URLS:
|
||||
response = await try_ollama_request(url, data)
|
||||
if response is not None:
|
||||
print(f"使用 API 地址: {url}")
|
||||
break
|
||||
|
||||
if response is None:
|
||||
raise Exception("所有 API 地址均不可用")
|
||||
|
||||
text_output = ""
|
||||
for line in response.iter_lines():
|
||||
if line:
|
||||
@@ -105,6 +132,7 @@ async def process_chat_request(chat_request):
|
||||
# 设置任务状态为 "error"
|
||||
redis_task_client.set(f"chat:{task_id}:status", "error")
|
||||
redis_task_client.set(f"chat:{task_id}:error", str(e))
|
||||
|
||||
def kafka_consumer_thread(consumer_id):
|
||||
consumer = create_kafka_consumer()
|
||||
print(f"消费者 {consumer_id} 已启动")
|
||||
|
||||
Reference in New Issue
Block a user