Skip to content

Commit e71f63e

Browse files
committed
add 60sec timeout
1 parent 1bf88be commit e71f63e

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

app/templates/index.html

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,12 @@ <h2>Ask Defang</h2>
293293

294294
function ask(query, responseContainer) {
295295
const assistantResponse = responseContainer.querySelector('.assistant-response');
296+
297+
// Add a timeout for fetch
298+
const controller = new AbortController();
299+
const signal = controller.signal;
300+
const timeoutId = setTimeout(() => controller.abort(), 60000); //60-second timeout
301+
296302
// Send query to server
297303
rateLimitingFetch('/ask', {
298304
method: 'POST',
@@ -301,8 +307,10 @@ <h2>Ask Defang</h2>
301307
'X-CSRFToken': '{{ csrf_token() }}'
302308
},
303309
body: JSON.stringify({ query: query }),
310+
signal: signal
304311
})
305312
.then(response => {
313+
clearTimeout(timeoutId); // Clear timeout if request succeeds
306314
const reader = response.body.getReader();
307315
const decoder = new TextDecoder();
308316
let responseText = '';
@@ -327,10 +335,15 @@ <h2>Ask Defang</h2>
327335
readStream();
328336
})
329337
.catch(error => {
330-
console.error('Error:', error);
338+
if (error.name === 'AbortError') {
339+
assistantResponse.textContent = 'Request timed out. Please try again in a moment.';
340+
console.error('Request timed out. Error: ', error);
341+
} else {
342+
assistantResponse.textContent = `Failed to fetch response. Error: ${error.message}`;
343+
console.error('Failed to fetch response. Error:', error);
344+
}
331345
loadingSpinner.style.display = 'none';
332346
sendButton.disabled = false;
333-
assistantResponse.textContent = 'Error: Failed to get response';
334347
chatBox.scrollTop = chatBox.scrollHeight;
335348
});
336349
}

0 commit comments

Comments
 (0)