ruby - Mechanize 前/后连接 Hook

标签 ruby mechanize mechanize-ruby

使用 Mechanize,我需要找到一些方法将请求限制为每秒 1 个(或每 5 秒 1 个,或每分钟 2 个,等等,关键是找到某种方法来限制请求速率)。

搜索,这似乎是开始解决问题的方法:连接前/后 Hook 。只有我不完全知道如何处理它们或如何处理,我猜测从我的水平和研究我需要做一个 lambda 或 proc 说'嘿等一下',似乎足够基本。

我的问题基本上是关于如何执行此操作的示例或其他线索。我尝试了几个 lambda(而且我对这到底会做什么了解程度很低):

@agent.pre_connect_hooks << lambda { |pc| sleep 1 }

但这只会将我的请求变成错误:

ArgumentError: wrong number of arguments (2 for 0)

到目前为止,即使开始阅读 Mechanize 代码对我来说也收效甚微。

感谢任何意见和学习指导。

最佳答案

你的 lambda 需要 2 个参数:

agent.pre_connect_hooks << lambda do |agent, request|
  sleep 1
end

关于ruby - Mechanize 前/后连接 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9218460/

相关文章:

ruby - 使用试运行选项运行 cucumber 时出错

ruby-on-rails - 为什么我的模型的唯一性验证规范在应该通过时却失败了?

php - 在 RESTful API 中引用 URL

python - 通过 POST 请求发送二进制图像

python - 在 HttpResponse() 调用后,Django View 没有得到完全处理

ruby - 单击与 Mechanize 的 xpath 链接

arrays - Ruby 选择方法 : check number of items that are selected

ruby - Mechanize : get all element in element?

ruby - 单击表单外的按钮(Ruby Mechanize)

ruby-on-rails - 使用 Ruby Mechanize 进行解析