catch timeout
This commit is contained in:
parent
e3c0f15744
commit
a80eb6d484
|
@ -61,7 +61,7 @@ class Callbacks:
|
||||||
# Extract the message text
|
# Extract the message text
|
||||||
msg = event.body.strip().strip('\n')
|
msg = event.body.strip().strip('\n')
|
||||||
|
|
||||||
logger.debug(f"Bot message received from {event.sender} in {room} --> {msg}")
|
logger.debug(f"Bot message received from {event.sender} in {room.room_id} --> {msg}")
|
||||||
|
|
||||||
await self.client.room_read_markers(room.room_id, event.event_id, event.event_id)
|
await self.client.room_read_markers(room.room_id, event.event_id, event.event_id)
|
||||||
|
|
||||||
|
|
|
@ -157,16 +157,20 @@ async def process_chat(client, room, event, command, store, openai_obj: ModuleTy
|
||||||
|
|
||||||
logger.debug(f'Generating reply to event {event.event_id}')
|
logger.debug(f'Generating reply to event {event.event_id}')
|
||||||
|
|
||||||
|
# I don't think the OpenAI py api has a built-in timeout
|
||||||
@stopit.threading_timeoutable(default=(None, None))
|
@stopit.threading_timeoutable(default=(None, None))
|
||||||
def generate():
|
def generate():
|
||||||
response = openai_obj.ChatCompletion.create(model=openai_model, messages=messages, temperature=0, timeout=10)
|
r = openai_obj.ChatCompletion.create(model=openai_model, messages=messages, temperature=0, timeout=10)
|
||||||
return response["choices"][0]["message"]["content"].strip().strip('\n'), response
|
return r["choices"][0]["message"]["content"].strip().strip('\n'), r
|
||||||
|
|
||||||
text_response = response = None
|
text_response = response = None
|
||||||
for i in range(openai_retries):
|
for i in range(openai_retries):
|
||||||
|
try:
|
||||||
text_response, response = generate(timeout=5)
|
text_response, response = generate(timeout=5)
|
||||||
if text_response is not None:
|
if text_response is not None:
|
||||||
break
|
break
|
||||||
|
except stopit.utils.TimeoutException:
|
||||||
|
continue
|
||||||
if text_response is None:
|
if text_response is None:
|
||||||
logger.critical(f'OpenAI API timeout for event {event.event_id} in room {room.room_id}.')
|
logger.critical(f'OpenAI API timeout for event {event.event_id} in room {room.room_id}.')
|
||||||
await react_to_event(client, room.room_id, event.event_id, '❌')
|
await react_to_event(client, room.room_id, event.event_id, '❌')
|
||||||
|
|
Loading…
Reference in New Issue