ruby-on-rails - 一种更快/更具可扩展性的 Twitter OAuth Dance in Rails 方法?

标签 ruby-on-rails ruby oauth heroku delayed-job

我在 Heroku Stack 上运行 Rails 应用程序(包括 Memcached、DJ 异步工作器、MongoDB 持久存储)。

现在我们使用 Twitter Oauth 作为我们网站上唯一的身份验证选项。 (我们计划最终扩展到 FB 连接、OpenID 和/或电子邮件/密码)。

Ruby/Rails 应用程序,您可能知道,不支持开箱即用的并发。在 Heroku 上,您可以启动额外的应用程序实例 (dynos),这会增加您的并发性(并发能力 = dynos 的数量),但每个实例的费用为 36 美元/月。

一般来说,这不是问题,因为网站上的平均请求耗时 <100 毫秒。

Twitter OAuth 除外。对 Twitter 的 OAuth 相关请求平均需要大约 3,500 毫秒。

所以基本上,当任何人登录整个应用程序实例时,都会被阻止 3-4 秒。

有什么好的方法可以缓解这种情况吗?将这些 Action 放在异步 DJ worker 中会不会很奇怪?它可能会使登录速度变慢一点,但至少如果一群人同时登录和/或 Twitter 真的很慢,这些过程不会影响应用程序的其余部分/其他网络请求吗?

还有其他想法吗?

最佳答案

我想说这个建议现在已经被取代了。我建议您改用 OmniAuth,如果您也需要普通身份验证,则可以使用 Devise。

OmniAuth 是建议的 Rack 应用程序,您基本上可以让所有“大型”OAuth 提供者一举成名。

有 2 个 OmniAuth 特定的 RailsCasts 可以引导您完成所需的内容:OmniAuth Part 1OmniAuth Part 2

关于ruby-on-rails - 一种更快/更具可扩展性的 Twitter OAuth Dance in Rails 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3425264/

相关文章:

ruby-on-rails - Ruby on Rails 2 表单样式 - 简单问题

ruby-on-rails - Ruby on Rails 和数据库关联

ruby - 返回可以为多个的所有最大值或最小值

ruby 将数组转换为函数参数

javascript - Facebook 登录时无限循环

java - 使用 Spring Oauth2 缓存访问 token

ruby-on-rails - 使用 rails Assets 管道预编译超薄模板

ruby-on-rails - 来自带有对象的字符串的命名路由

ruby-on-rails - 如何在本地安装 gem ?

oauth - 新的 Flickr OAuth API 是否支持 JSONP?