【问题标题】:Should I instantiate an object every request or once upon app launch?我应该在每次请求时还是在应用程序启动时实例化一个对象?
【发布时间】:2015-06-12 19:46:44
【问题描述】:

在我的 Rack 应用程序中,我需要使用 AWS Cognito Client 进行注册和登录请求。

我应该初始化吗:

  1. 每个请求都有一个单独的客户端(分配给call 方法内的局部变量)?
  2. 一个客户端(分配给call 方法之外的全局变量)用于所有请求?

关注点:

  1. 速度和清理:初始化时间快吗?客户端是否在每次请求结束时自动销毁?我研究了源代码,但没有掌握元编程。
  2. 线程安全:这个选项线程安全吗?我已将 Puma 配置为使用多个线程。

【问题讨论】:

    标签: ruby amazon-web-services amazon-s3 rack aws-sdk


    【解决方案1】:

    当您委托最终用户获取凭证并自己调用 AWS 时,Cognito 最有用,因此通常不需要在服务器端使用 Cognito。

    编辑:如果你想实现开发者认证的身份,那么使用 Cognito 服务客户端绝对是有意义的,这样你就可以调用 GetOpenIdTokenForDeveloperIdentity。在多线程环境中这样做是安全的,因为在调用该调用之间根本不会保存任何状态。

    【讨论】:

    • 我以为你需要服务器上的 Cognito 来支持developer authenticated identities
    • 抱歉,我没有考虑开发人员认证的身份,我的回答不准确。我已经编辑了我的答案以反映这一点。
    猜你喜欢
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    • 2020-07-13
    • 2014-10-01
    • 1970-01-01
    相关资源
    最近更新 更多