如何设置 AWS Appsync 请求超时限制 || AWSAppSync 客户端不提供回调

2024-05-24

我正在使用 AWS Appsync 来开发当前的应用程序,并面临一个严重的问题,即每当我在 Appsync 客户端中触发查询时,当互联网连接速度较慢时,请求永远不会以回调结束。我在互联网上查了一下,关于这个主题的信息来源有限,而且发现这个问题 https://github.com/awslabs/aws-mobile-appsync-sdk-ios/issues/91那仍然是开放的。

这是我用来获取响应的代码

func getAllApi(completion:@escaping DataCallback){
    guard isInternetAvailabele() else {
        completion(nil)
        return
    }
    // AppSyncManager.Client() is AWSAppSyncClient Object
    AppSyncManager.Client().fetch(query: GetlAllPostQuery(input: allInputs), cachePolicy:.fetchIgnoringCacheData) {
        (result, error) in
        var haveError:Bool = error != nil
        if let _ = result?.data?.getAllPostings?.responseCode {haveError = false} else {haveError = true}
        if haveError  {
            print(error?.localizedDescription ?? "")
            completion(nil)
            return
        }

        if result != nil{
            completion(result)
        }else{
            completion(nil)
        }
    }
}

该代码在互联网连接下工作正常,我已经在顶部检查过是否没有互联网,但是当互联网连接速度缓慢或 wifi 连接到我用我的手机创建的热点并禁用互联网数据时,请求不会返回任何回调,它应该发出失败警报,就像我们在请求超时时在其他 api 中收到的那样。 是否有对请求超时请求的支持,或者我错过了什么?

注意:我在终端收到这些日志

Task <06E9BBF4-5731-471B-9B7D-19E5E504E57F>.<45> HTTP load failed (error code: -1001 [1:60])
Task <D91CA952-DBB5-4DBD-9A90-98E2069DBE2D>.<46> HTTP load failed (error code: -1001 [1:60])
Task <06E9BBF4-5731-471B-9B7D-19E5E504E57F>.<45> finished with error - code: -1001
Task <D91CA952-DBB5-4DBD-9A90-98E2069DBE2D>.<46> finished with error - code: -1001

实际上有两种可能的方法来解决这个问题,

1)配置时AWSAppSyncClientConfiguration, 提供自定义URLSessionConfiguration并设置请求timeout根据您的需求,

extension URLSessionConfiguration {

    /// A `URLSessionConfiguration` to have a request timeout of 1 minutes.
    static let customDelayed: URLSessionConfiguration = {
        let secondsInOneMinute = 60
        let numberOfMinutesForTimeout = 1
        let timoutInterval = TimeInterval(numberOfMinutesForTimeout * secondsInOneMinute)

        let configuration = URLSessionConfiguration.default
        configuration.timeoutIntervalForRequest = timoutInterval
        configuration.timeoutIntervalForResource = timoutInterval
        return configuration
    }()
}

并传递此会话配置,即URLSessionConfiguration.customDelayed初始化时AWSAppSyncClientConfiguration因为它接受URLSessionConfiguration在下面的构造函数中,

public convenience init(url: URL,
                        serviceRegion: AWSRegionType,
                        credentialsProvider: AWSCredentialsProvider,
                        urlSessionConfiguration: URLSessionConfiguration = URLSessionConfiguration.default,
                        databaseURL: URL? = nil,
                        connectionStateChangeHandler: ConnectionStateChangeHandler? = nil,
                        s3ObjectManager: AWSS3ObjectManager? = nil,
                        presignedURLClient: AWSS3ObjectPresignedURLGenerator? = nil) throws {

2)如果第一个不起作用,那么您还有另一个选项可以直接编辑/解锁 pod 文件。有一个班级AWSAppSyncRetryHandler您可以在其中更改重试请求的逻辑。如果您能够解决问题,那么您可以分叉原始存储库、克隆您的存储库、在存储库中进行更改,并在 pods 文件中指向此 pod 以使用您的存储库。应该这样做,因为直接更改 pod 文件是绝对错误的,除非您真的陷入困境并想要找到一些解决方案。

Update: This issue https://github.com/awslabs/aws-mobile-appsync-sdk-ios/issues/91#issuecomment-440550288已修复AppSync SDK 2.7.0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置 AWS Appsync 请求超时限制 || AWSAppSync 客户端不提供回调 的相关文章

  • 如何在注销并重新登录后保存按钮状态?

    我有一个保存按钮 点击该按钮后 会将标签 quoteLabel 中的文本保存到 Firebase 中的用户帐户 然后该按钮将隐藏 并且取消保存按钮将不再隐藏 以便用户可以根据需要取消保存 这两个按钮都可以根据需要发布和删除数据 但是 如果我
  • ios如何搜索目录

    我想知道如何检查我的应用程序中是否存在目录 例如 如果我想搜索我的应用程序文档中是否存在文件夹 以及如何在其中创建新文件夹 此致 检查文件是否存在 BOOL fileExistsAtAbsolutePath NSString filenam
  • 使用 Swift 访问 Twitter

    我正在使用 Swifter 库在我的 Swift iOS 8 应用程序中访问 Twitter https github com mattdonnelly Swifter https github com mattdonnelly Swift
  • WKWebView 截图

    我正在尝试捕获网络视图向用户显示的图像 以便我可以对网页进行一些颜色分析 当我尝试从其父级获取图像时 即使页面已呈现 我基本上也会得到一个白框 func makeImageSnapshot gt NSImage let imgSize se
  • 为什么我需要 2 个或更多核心数据模型?

    我很想知道谁使用多个核心数据模型以及为什么 有什么好处 我正在开发一个应用程序 我认为我可以从多个模型中受益 但我不确定其他好处 我即将推出的应用程序将适用于 iPad 和 iPhone 的另一个版本 iPad 有 3 个主要内容 iPho
  • 以编程方式更改自动布局约束后视图未更新

    事先我必须说 我实际上得到了我想要的可见效果 但不是以令人满意的方式 因为现在需要 打破 约束而不是正确更新 我有一个 ViewController 其中包含一个 UITableView 那个的高度tableView可以从 0 不可见 到它
  • 无法运行应用程序,gradle 给出错误:No Such Field 错误

    我正在使用 Amazon Face Rekognition API 并在从相机捕获图像后将图像发送到 aws 时收到此错误 java lang NoSuchFieldError 没有类型的静态字段实例 Lorg apache http co
  • 无法在 AWS EB CLI 中设置 SSH [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当我尝试在 Elastic Beanstalk CLI 上设置 SSH 密钥时 出现以下错误 ERROR SSH is not insta
  • ios GPUImage,小尺寸图像处理效果不好?

    我正在尝试为 OCR 准备图像 我使用 GPUImage 来完成 代码工作正常 直到我裁剪图像 裁剪后我得到了糟糕的结果 作物面积 https www dropbox com s e3mlp25sl6m55yk IMG 0709 PNG h
  • 将时间舍入到最接近的三十秒

    我有一个应用程序 它显示每 30 秒过期的数据 准确地说 在 h m s 11 30 00 11 30 30 11 31 00 等 我可以获得当前时间 但我不确定如何计算现在到最近的三十秒之间的时间 我发现的所有内容都是 Objective
  • Cors政策不允许上传

    谁能告诉我我是否在这里错过了什么 这已添加到相关存储桶中的 CORS 策略中
  • iOS UITableView:使用 CAGradientLayer 将背景颜色指定为渐变

    我刚刚开始使用 Xcode 4 3 中的主从视图模板 我试图更改主视图的背景颜色并将其设置为颜色渐变 这是我尝试过的 Colors m import Colors h implementation Colors UIColor naviga
  • 如何获得 UICollectionView 的矩形

    我想在 UICollectionView 中找到节标题的框架 我对 UITableView 也有类似的情况 为此 我能够通过执行以下操作来获得其正确性 CGRect rect self tableView rectForHeaderInSe
  • AST 文件格式错误或损坏

    我有一个问题 我不知道为什么会发生这种情况 但很可能是因为我错误地按了 移动到垃圾箱 到某些系统框架 我收到一条错误消息 AST 文件格式错误或损坏 找不到 AST 文件引用的文件 Users username myProject Quar
  • watchOS 2 上的最大内存使用量?

    我没有找到任何有关 watchOS 2 中应用程序可用内存使用的信息 我目前正在为 watchOS 开发一个应用程序 并且在手表端使用 Core Data 当我将 189 个对象中的 166 个加载到数组时 应用程序崩溃 此时的内存使用量为
  • 如何动态添加XCTestCase

    我正在为一个白标签项目编写 UI 测试 其中每个应用程序都有一组不同的菜单项 测试点击每个菜单项并截取屏幕截图 使用快车道快照 https docs fastlane tools actions snapshot 目前这一切都发生在一个内部
  • 如何使用 AEM 解析 org.apache.http.ssl?

    最终 我尝试在 Java 代码中使用 AWS S3 库来通过 AEM 启用服务器端 S3 上传 但在安装依赖项和 或由 AEM 识别时遇到了问题 每次我添加新的依赖项时 都会弹出五个问题 在我尝试构建的这个包中 这是我看到的错误 The i
  • iOS 上的推送通知渐进式 Web 应用程序

    我需要开发一个集成了推送通知的渐进式网络应用程序 在网上搜索我发现了关于这个主题的不同意见 如果我理解正确的话 目前我们无法在移动版 safari 中推送通知 但仅限桌面版 这样对吗 你有什么建议来获得相同的结果吗 我不是iOS专家 我想知
  • Objective-C 中 NSURL 为 null 而 NSString 是正确的

    我有一个NSString包含一个 url 以及当我分配时NSURL与NSString NSURL 输出 空 这是因为url中有一些非法字符 导致NSURL不编码就无法读取NSString包含网址 NSString u incomingUrl
  • 初始化Object中的空字符串?

    有人使用以下方法来初始化 NSstring NSString astring NSString alloc init 我想知道为什么不直接使用 NSString atring nil or NSString astring 没有semant

随机推荐

  • 基本矩阵错误?

    我试图通过扫描从相机拍摄的两个图像 检测图像中的特征 匹配它们 创建基本矩阵 使用相机内在函数计算基本矩阵 然后分解它以找到旋转和翻译 这是matlab代码 I1 rgb2gray imread 1 png I2 rgb2gray imre
  • 捕获数据包后会发生什么?

    我一直在阅读关于网卡捕获数据包后会发生什么的内容 我读得越多 我就越困惑 首先 我读过传统上 在网卡捕获数据包后 它会被复制到内核空间中的一个内存块 然后复制到用户空间 供随后处理数据包数据的任何应用程序使用 然后我读到了 DMA 其中 N
  • 不允许循环文件引用。发布 ASP.NET (2.0) 网站

    当我重新 构建 ASP NET 网站时 我没有收到任何错误 然而 当我发布该网站时 它给我一个 不允许循环文件引用 的信息 错误 我在网上读到了一些关于此的内容 它提供了一个batch false 选项 我尝试过但什么也没做 该页面有一个母
  • 我可以删除单个子实体而不加载整个集合吗?

    我有 2 个课程 如下所示 它们可以拥有非常大的集合 一个网站可能有 2 000 多个网站页面 反之亦然 class WebsitePage public int ID get set public string Title get set
  • 如何在 Android 中检查与配对设备的蓝牙连接状态

    我开发了一个蓝牙应用程序 它将连接到配对的设备并发送消息 但我必须先测试连接 我尝试了很多选择 但没有一个效果很好 那么您能给我发送任何可以做到这一点的代码示例吗 我创建了一个线程 但无法获得良好的连接状态来构建 if 函数 这是代码 pa
  • 获取 PHP 网站的根 URL

    我目前正在开发一个 PHP 项目 正在寻找一种方法来获取网站根目录的 URL 我的根目录有一个配置文件 所以我正在考虑使用它来找出 基本 URL 我正在寻找一种动态执行此操作的方法 以便我可以找到网站根目录的 URL 即http domai
  • 为什么我们应该在 Keras 中对深度学习数据进行标准化?

    我正在 Keras 中测试一些网络架构 以对 MNIST 数据集进行分类 我已经实现了一个类似于 LeNet 的方法 我看到在网上找到的例子中 有一个数据标准化的步骤 例如 X train 255 我在没有这种标准化的情况下进行了测试 我发
  • 如何更改mysql.sock?

    我已经通过二进制安装安装了mysql并按照以下步骤操作http dev mysql com doc refman 5 0 en binary installation html http dev mysql com doc refman 5
  • 使用 Python 的 optparse 模块时如何遵守 PEP 257 文档字符串?

    根据PEP 257 http www python org dev peps pep 0257 multi line docstrings命令行脚本的文档字符串应该是它的使用消息 脚本的文档字符串 a 独立程序 应该可用 作为其 使用 消息
  • 在 Android Studio 中设置 Http 代理

    我已经阅读了多个类似的问题和文档 但我无法解决我的机器所在的公司防火墙的问题 我收到的错误是 无法刷新 Gradle 项目 未知主机 services gradle org 我所阅读和理解的所有内容都让我相信这是一个 http 代理问题 我
  • angularjs ng-options从嵌套的json数组中选择

    我在我的范围内定义了一个 json scope People firstName John lastName Doe Choices Name Dinner Options Name Fish ID 1
  • 使用 Cheerio 选择具有属性的元素

    选择具有特定属性的所有 dom 元素的最有效方法是什么
  • 如何扩展类型参数,使其仅允许字符串文字类型,而不允许“字符串”本身?

    我需要一个本质上是 除 reservedKeywords 之外的任何字符串 的类型 然而 这显然是要么不可能 要么棘手且笨拙 https stackoverflow com a 63549561 1730082 我可以满足于必须指定要使用的
  • 使用 PostgreSQL 安装 PassportJS

    是否有使用 PostgreSQL 设置 PassportJS 的演练教程 即用 PostgreSQL 替换 MongoDB 好吧 这已经开放了一段时间 但由于我发现自己也遇到了同样的问题 所以就这样了 您唯一需要做的就是使用 Postgre
  • Mongo 正则表达式用于“不匹配”或反向[重复]

    这个问题在这里已经有答案了 我的 mongo 文档都包含一个名为templateName 有一些包含该值的文档 a SystemDefaultTemplate b SystemDefaultTemplate c SystemDefaultT
  • next.js 13 服务器组件中的访问域和完整路径

    如何使用应用程序目录访问 Next js 13 中服务器组件中的域名和完整路径 在 Next js 的早期版本 例如版本 12 中 我可以使用 getServerSideProps 函数中的上下文来执行此操作 但应用程序目录中不再支持此操作
  • nodejs:process.stdout.write 的短别名

    我正在学习nodejs 而且我喜欢它 我试图弄清楚如何使用更短的别名console log我发现我可以使用var cout console log并使用cout string 从那时起 然后当我想使用process stdout write
  • Python Pandas 从宽到长的格式更改以及列标题拆分

    我有一个包含以下列标题和行示例的表 Subject Test1 Result1 Test1 Result2 Test2 Result1 Test2 Result2 0 John 10 0 5 20 0 3 我想将其改造成 Subject l
  • 为什么需要 JsonRequestBehavior?

    Why is Json Request Behavior needed 如果我想限制HttpGet对我的动作的请求我可以用 HttpPost 属性 Example HttpPost public JsonResult Foo return
  • 如何设置 AWS Appsync 请求超时限制 || AWSAppSync 客户端不提供回调

    我正在使用 AWS Appsync 来开发当前的应用程序 并面临一个严重的问题 即每当我在 Appsync 客户端中触发查询时 当互联网连接速度较慢时 请求永远不会以回调结束 我在互联网上查了一下 关于这个主题的信息来源有限 而且发现这个问