我正在尝试使用aws-sdk-ios在iOS应用程序中使用亚马逊网络服务转录。应用程序启动了一个转录作业,我可以在AWS控制台上看到该作业。但应用程序无法列出作业或获取特定作业,因为它被卡在对getTranscriptionJob或listTranscriptionJobs的请求中,因为这些请求永远不会完成(我在完成块中添加了一条打印语句和一个断点,它永远不会打印,也不会到达断点)。
我上传了一个示例单视图应用程序到GitHub上,演示了这个问题。您需要一个亚马逊网络服务帐户或IAM用户,拥有对S3和转录的完全权限。在适当变量中插入ViewController.swift中的帐户密钥和S3存储桶。
https://github.com/joaomarceloods/AWSTranscribeBug
我需要帮助。这是一个bug,还是我做错了什么?
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")发布于 2019-12-14 03:21:46
我找到了一个解决方案。
我仍然不明白为什么getTranscriptionJob会冻结,但是如果你在DispatchQueue.global()上运行它,它会正常执行
.continueWith(executor: AWSExecutor(dispatchQueue: DispatchQueue.global())) {示例代码diff:https://github.com/joaomarceloods/AWSTranscribeBug/commit/98e43af553413ed2bbd0c3f96e259139a991303e
https://stackoverflow.com/questions/59061357
复制相似问题