我正在尝试使用aws-sdk-ios在iOS应用中使用AWS Transcribe。该应用程序启动了转录作业,我可以在AWS控制台上看到该作业。但是该应用无法列出任务或获得特定任务,因为它卡在了getTranscriptionJob
或listTranscriptionJobs
的请求中,因为这些请求从未完成(我添加了打印语句和断点在完成代码块中,并且永远不会打印,也不会到达断点。
我向GitHub上传了一个示例单视图应用程序,演示了该问题。您将需要一个具有S3和Transcribe完全权限的AWS账户或IAM用户。将该帐户的密钥和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")
答案 0 :(得分:0)
我找到了解决方法。
我仍然不明白为什么getTranscriptionJob
冻结,但是如果您在DispatchQueue.global()
上运行它,它将正常执行:
.continueWith(executor: AWSExecutor(dispatchQueue: DispatchQueue.global())) {
示例代码差异:https://github.com/joaomarceloods/AWSTranscribeBug/commit/98e43af553413ed2bbd0c3f96e259139a991303e