AWS Transcribe застрял в getTranscriptionJob в iOS

Я пытаюсь использовать AWS Transcribe в приложении для iOS с помощью aws-sdk-ios. Приложение запускает задание по транскрипции, и я вижу его в консоли AWS. Но приложение не может перечислить задания или получить конкретное задание, потому что оно застревает в запросе к getTranscriptionJob или listTranscriptionJobs, поскольку эти запросы никогда не завершаются (я добавил оператор печати и точку останова внутри блока завершения, и он никогда не печатает и не достигает точки останова).

Я загрузил на GitHub образец приложения с одним представлением, демонстрирующий проблему. Вам понадобится учетная запись AWS или пользователь IAM с полными разрешениями на S3 и Transcribe. Вставьте ключи этой учетной записи и корзину S3 в ViewController.swift в соответствующие переменные.

https://github.com/joaomarceloods/AWSTranscribeBug

Мне нужна помощь. Это ошибка или я что-то не так делаю?

Swift, iOS 13.2, CocoaPods, AWSCore 2.12.1, AWSTranscribe 2.12.1

Самый важный фрагмент:

    /// `getTranscriptionJob` repeatedly until the status is no longer `inProgress`.
    /// However, `getTranscriptionJob` never completes.
    var transcriptionInProgress = true
    while transcriptionInProgress {
        print("getTranscriptionJob")
        transcribe.getTranscriptionJob(request).continueWith { task -> Any? in
            print("getTranscriptionJob never completes...")
            let transcriptionJob = task.result?.transcriptionJob
            transcriptionInProgress = transcriptionJob?.transcriptionJobStatus == .inProgress
            return nil
        }.waitUntilFinished()
    }
    print("...after the getTranscriptionJob")

person João Souza    schedule 27.11.2019    source источник


Ответы (1)


Я нашел решение.

Я до сих пор не понимаю, почему getTranscriptionJob зависает, но он будет работать нормально, если вы запустите его на DispatchQueue.global():

.continueWith(executor: AWSExecutor(dispatchQueue: DispatchQueue.global())) {

Пример различий в коде: https://github.com/Joaomarceloods/983ebBBBBBBB3e4e4e3e4e4e6e3e6e6e6e6e6eaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, >

Ссылка: https://aws-amplify.github.io/docs/ios/how-to-ios-asynchrounous-tasks#executing-a-block-on-the-main-thread-with-awstask

person João Souza    schedule 13.12.2019