我正在开发一个应用程序,该应用程序使用 Ruby 的 Mechanize 登录到受密码保护的站点并使用某些数据馈送。反过来,我的应用程序允许我的用户查询和操作数据。每次有新用户访问我的应用程序时,它都会登录到远程数据源以获取数据。
问题是:远程站点允许会话持续长达 24 小时。减少远程站点上的多次登录的最佳解决方案是什么?
有多种方法可以实现此目的:序列化 Mechanize 对象并将其保存到数据库,将 Mechanize 的 cookie/jar/会话信息保存到请求之间的共享文件中等。我正在寻找最佳实践,最重要的是,一个可以在 Heroku 的多线程环境中工作的解决方案。
以下是我会做的:
- 制作一个耙子任务以使用机械化登录站点并保存文件或数据库中的 cookie。按 24 小时计划运行它。
- 从您的控制器中,除非您确实需要它,否则请使用更多的东西比 Mechanize (net/http?) 轻量级,以发送 cookie 并制作请求。