使用 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/