Skip to content

Commit e6446dc

Browse files
committed
add timeout for openai API stream
1 parent 8091c1c commit e6446dc

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "pythagora",
3-
"version": "0.0.78",
3+
"version": "0.0.79",
44
"author": {
55
"name": "Zvonimir Sabljic",
66
"email": "[email protected]"

src/helpers/api.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,18 @@ function setOptions({path, method, headers}) {
4141

4242
async function makeRequest(data, options, customLogFunction) {
4343
let gptResponse = '';
44-
let end = false;
4544
let httpModule = options.protocol === 'http' ? require('http') : require('https');
45+
let timeout;
4646

4747
return new Promise((resolve, reject) => {
4848
const req = httpModule.request(_.omit(options, ['protocol']), function(res){
4949
res.on('data', (chunk) => {
5050
try {
51+
clearTimeout(timeout);
52+
timeout = setTimeout(() => {
53+
reject(new Error("Request timeout"));
54+
}, 30000);
55+
5156
let stringified = chunk.toString();
5257
try {
5358
let json = JSON.parse(stringified);
@@ -64,6 +69,8 @@ async function makeRequest(data, options, customLogFunction) {
6469
} catch (e) {}
6570
});
6671
res.on('end', async function () {
72+
clearTimeout(timeout);
73+
6774
process.stdout.write('\n');
6875
if (res.statusCode >= 400) return reject(new Error(`Response status code: ${res.statusCode}. Error message: ${gptResponse}`));
6976
if (gptResponse.error) return reject(new Error(`Error: ${gptResponse.error.message}. Code: ${gptResponse.error.code}`));
@@ -74,6 +81,7 @@ async function makeRequest(data, options, customLogFunction) {
7481
});
7582

7683
req.on('error', (e) => {
84+
clearTimeout(timeout);
7785
console.error("problem with request:"+e.message);
7886
reject(e);
7987
});

0 commit comments

Comments
 (0)