Moderator
you know how long I was going 1 by 1? lmao
Votes
0
Replies
24
Participants
Unknown
Messages
25
Moderator
you know how long I was going 1 by 1? lmao
Moderator
Docs should be updated with common "helper" functions IMO, stuff like that isn't that common knowledge, it makes sense, but I feel like most won't think of it
the promise.all part is the:
insert into Appwrite M CVEs at a time
part
Moderator
though I imagine there's something in the works
Moderator
yeah that's what I figured
that M is what you would tune
Moderator
I thought it would be cool to spawn X child functions hahaha
ya...that sounds complicated
Moderator
Technically it was easy, but yeah the actual implementation with Functions is not
Moderator
cause it was waiting for the execution to finish before returning resolution, and if I did allSettled then nothing would happen
Moderator
which makes sense, docker container gets destroyed
stuff like what?
i was doing 150/s...so i think each execution took about 15s to finish
so since it took 15s, i had the function run every minute
Moderator
neat, smart, that makes sense
Moderator
Like "tricks" sort of that aren't commonly known, such as inserting large amounts of data using promise.all because I def didn't know for a minute, mostly because I love Python and Dart and such
dart has something like promise.all too 😉
Moderator
Hey I'm trying to batch delete and I made it dead simple, I'm only giving it 1000 documents at a time for each function creation and every single one is getting internal curl error
Maybe it's too much? Try lowering it?
What's your code?
Moderator
const batch_size = 1000;
export default async ({ req, res, log, error }: any) => { const client = new Client() .setEndpoint('https://appwrite.pva.ai/v1') .setProject(Bun.env["APPWRITE_FUNCTION_PROJECT_ID"]) .setKey(Bun.env["APPWRITE_API_KEY"]); const db = new Databases(client); log("Spawned child function to delete data"); const databaseId = req.body.databaseId; const collectionId = req.body.collectionId; const ids = req.body.ids;
const chunkedIds = Array.from({ length: Math.ceil(ids.length / batch_size) }, (_, i) => ids.slice(i * batch_size, (i + 1) * batch_size)); const childPromises: Promise<any>[] = chunkedIds.map(chunk => { log(`Deleting ${chunk.length} documents`); return Promise.all(chunk.map(id => db.deleteDocument(databaseId, collectionId, id).catch((e: any) => log(`Error deleting document: ${e}`)))); });
await Promise.all(childPromises); return res.empty();};Moderator
I'm only seeing 2-3 second runtimes before internal curl
Moderator
but tbh what I don't understand is what the heck is the internal curl error that's happening? Shouldn't code that works just... work?
Moderator
Yeah this is still broken
Moderator
@Steven so is this an Executor error when calling it? I imagine you guys have some idea of what the issue is