Operation timed out after 30002 milliseconds with Functions - Completely random
- 0
- Self Hosted
- Functions
- Appwrite Version 1.5.5 selfhosted
- Function Runtime Node.js 16.0
- Timeout 240
- .env: _APP_FUNCTIONS_TIMEOUT=1900
- Angular 17
In the Appwrite function I use this admittedly somewhat larger method to create a collection with attributes:
async function newNotesCollection(title, res, log) {
log('newNotesCollection');
try {
const response = await appwriteService.createCollection(title);
log('after createCollection...');
await appwriteService.createStringAttribute('message',response.$id, 2000);
log('after createStringAttribute message...');
await appwriteService.createStringAttribute('username',response.$id, 50);
log('after createCollection username...');
await appwriteService.createStringAttribute('userId',response.$id, 50);
log('after createCollection userId...');
await appwriteService.createNumberAttribute('date', response.$id, 50);
log('after createCollection date...');
let ready = false;
while (!ready) {
log('Attributes not ready....');
ready = await appwriteService.newCollectionAttributesReady(response.$id,log);
await delay(2000); // Warte 2 Sekunden, bevor du die Methode erneut aufrufst
}
log('Attributes ready.');
return res.send(response);
} catch (e) {
log('Error: ' + e);
return res.status(500).send('An error occurred: ' + e);
}
}```
In 9 out of 10 cases everything runs perfectly, the while loop always runs twice and then everything is ready:
But in this one case I get the timeout and NO logs at all:
`Operation timed out after 30002 milliseconds with 0 bytes received with status code 0\nError Code: 0`
- Why does the timeout always come at 30002 milliseconds?
- And why is there a timeout at all.... ?
I've really tried a lot, but unfortunately I can't make any progress at the moment because it's just so random for me.
Thank you for help π
i changed the method a bit (while....): ```js async function newNotesCollection(title, res, log) { log('newNotesCollection'); try { const response = await appwriteService.createCollection(title); log('after createCollection...');
await appwriteService.createStringAttribute('message',response.$id, 2000);
log('after createStringAttribute message...');
await appwriteService.createStringAttribute('username',response.$id, 50);
log('after createCollection username...');
await appwriteService.createStringAttribute('userId',response.$id, 50);
log('after createCollection userId...');
await appwriteService.createNumberAttribute('date', response.$id, 50);
log('after createCollection date...');
let ready = false;
let attempts = 0;
const maxAttempts = 8;
while (!ready && attempts < maxAttempts) {
log('Attributes not ready....');
ready = await appwriteService.newCollectionAttributesReady(response.$id,log);
await delay(2000); // Warte 2 Sekunden, bevor du die Methode erneut aufrufst
}
if (!ready) {
log('Attributes not ready....');
return res.status(500).send('Attributes not ready. Collection id: ' + response.$id);
}
log('Attributes ready.');
return res.send(response);
} catch (e) { log('Error: ' + e); return res.status(500).send('An error occurred: ' + e); } }```
So I think the way I rebuilt the while loop, there shouldn't be a timeout anymore. If nothing is found in the while, an error is sent back.... I have now sent requests 100 times, each with a 10 second delay. The first 30 were processed sensibly, but now the timeouts are increasing... (look the image) Server(CPU-Core: 4, Ram 6gb): RAM 39% utilization, cpu approx. 67-78% utilization...
Operation timed out after 30002 milliseconds with Functions - Completely random
Recommended threads
- How to Avoid Double Requests in function...
I'm currently using Appwrite's `functions.createExecution` in my project. I want to avoid double requests when multiple actions (like searching or pagination) a...
- Send Email Verification With REST
I am using REST to create a user on the server side after receiving form data from the client. After the account is successfully created i wanted to send the v...
- Use different email hosts for different ...
Hello, I have 2 projects and i want to be able to set up email templates in the projects. Both projects will have different email host configurations. I see ...