Estoy usando lo siguiente para cargar imágenes en S3. Curiosamente, ni siquiera entra en el Bloque. Entonces, sin error, sin indicación de éxito... simplemente no devuelve nada en absoluto. No he visto que esto suceda antes.
AWSS3TransferManagerUploadRequest *amazonUploadRequest = [AWSS3TransferManagerUploadRequest new]; amazonUploadRequest.bucket = AWS_PICTURE_BUCKET; amazonUploadRequest.body = fileUrl; amazonUploadRequest.key = key; amazonUploadRequest.contentType = @"image/jpeg"; AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager]; [[transferManager upload:amazonUploadRequest] continueWithBlock:^id _Nullable(AWSTask * _Nonnull task) { //Never reaches here. if (task.error == nil) { completionBlock(); } else { errorBlock(task.error); } return nil; }];¿Alguien ha visto este problema alguna vez? He usado esto en el pasado para cargar 1 o 2 imágenes o incluso 50 imágenes en bucle. Estoy intentando en este momento con 100 en este momento y ni siquiera se ejecuta una vez.
¡Lo encontré!
Así que estaba usando dispatch_semaphore_t de forma asíncrona para cada carga y resulta que GCD tiene un límite de 64 subprocesos y lo estaba alcanzando con más de 100 cargas. Esto hacía que todas las cargas esperaran (DISPATCH_TIME_FOREVER) y, por lo tanto, parecía que el método de AWS no respondía.
Lo arreglé ajustando dispatch_semaphore_t y deshaciéndome de mi bloque asincrónico para carga individual. Si se encuentra en esta situación, presione el botón de pause y busque la cantidad de subprocesos que se ejecutan a la vez.
¡Gracias!