首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在rails应用程序中异步加载Braintree ClientToken

在rails应用程序中异步加载Braintree ClientToken
EN

Stack Overflow用户
提问于 2015-06-29 13:23:43
回答 1查看 255关注 0票数 0

我目前正在使用gon gem在braintree中加载client_token。

下面显示了控制器方法:

代码语言:javascript
复制
def new
    @rental_info = display_rental_info(params[:rental_request_new_form])
    @product = Product.find(params[:rental_request_new_form][:product_id])
    gon.client_token = generate_client_token
end

private

def generate_client_token
    Braintree::ClientToken.generate(customer_id: current_user.braintree_customer_id)
end

很快,我意识到了这种方式的潜在问题。如果到Braintree的连接速度很慢,它将只保留请求并阻止所有其他请求。有时(以极少数的概率),加载请求需要6-10秒。有一次,在等待60秒后,实际上导致了Net::OpenTimeout - execution expired错误。

我想知道有什么好方法可以解决这个问题并防止它阻塞其他请求。

EN

回答 1

Stack Overflow用户

发布于 2015-09-01 01:39:07

我在布林特里工作。您看到的ClientToken.generate端点的响应时间在我们的生产环境中并不常见,但在我们的沙箱环境中可能会遇到这种情况。我建议您联系我们的support team进一步诊断这个问题。

此外,在单个请求中调用Braintree不应阻止对您的web服务器的其他请求。Web服务器同时处理多个请求。如果您尝试异步调用ClientToken.generate,它将允许您在接收Braintree令牌的同时对此请求执行其他服务器端处理,但我会权衡将单个请求的处理并行化的好处,然后再考虑额外的复杂性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31108321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档