@@ -682,23 +682,42 @@ export async function uploadDocumentsToMemory({
682
682
name : string ;
683
683
account : Account ;
684
684
} ) {
685
- for ( const doc of documents ) {
686
- try {
687
- p . log . message ( `Uploading document: ${ doc . name } ....` ) ;
688
- await new Promise ( resolve => setTimeout ( resolve , 800 ) ) ; // To avoid rate limiting
689
- const signedUrl = await getSignedUploadUrl ( {
690
- documentName : doc . name ,
691
- memoryName : name ,
692
- account
693
- } ) ;
685
+ const BATCH_SIZE = 5 ; // Number of concurrent uploads
686
+ const RATE_LIMIT_DELAY = 1000 ; // 1 second delay between requests
694
687
695
- const uploadResponse = await uploadDocument ( signedUrl , doc . blob ) ;
696
- dlog ( `Upload response status: ${ uploadResponse . status } ` ) ;
688
+ // Process documents in batches to avoid rate limiting
689
+ for ( let i = 0 ; i < documents . length ; i += BATCH_SIZE ) {
690
+ const batch = documents . slice ( i , i + BATCH_SIZE ) ;
697
691
698
- p . log . message ( `Uploaded document: ${ doc . name } ` ) ;
699
- } catch ( error ) {
700
- throw error ;
701
- }
692
+ const batchUploadPromises = batch . map ( async ( doc , index ) => {
693
+ try {
694
+ // Stagger requests within batch
695
+ await new Promise ( resolve =>
696
+ setTimeout ( resolve , index * RATE_LIMIT_DELAY )
697
+ ) ;
698
+
699
+ // p.log.message(`Uploading document: ${doc.name} ....`);
700
+ const signedUrl = await getSignedUploadUrl ( {
701
+ documentName : doc . name ,
702
+ memoryName : name ,
703
+ account
704
+ } ) ;
705
+
706
+ const uploadResponse = await uploadDocument (
707
+ signedUrl ,
708
+ doc . blob
709
+ ) ;
710
+ dlog ( `Upload response status: ${ uploadResponse . status } ` ) ;
711
+
712
+ p . log . message ( `Uploaded document: ${ doc . name } ` ) ;
713
+ } catch ( error : any ) {
714
+ throw new Error (
715
+ `Failed to upload ${ doc . name } : ${ error . message ?? error } `
716
+ ) ;
717
+ }
718
+ } ) ;
719
+
720
+ await Promise . all ( batchUploadPromises ) ;
702
721
}
703
722
}
704
723
0 commit comments