机械化前/后连接钩
使用 Mechanize,我需要找到某种方法将请求限制为每秒 1 个(或每 5 秒 1 个,或每分钟 2 个,等等,重点是找到某种方法来限制请求的速率)。
搜索,这似乎是开始解决问题的方法:前/后连接挂钩。只是我不完全知道如何处理它们或如何处理,我从我的水平和研究猜测我需要做一个 lambda 或 proc 来表示“嘿等一下”,似乎足够基本了。
我的问题基本上是关于如何做到这一点的示例或其他线索。我尝试了几个 lambda(我对它到底会做什么的理解水平很低):
@agent.pre_connect_hooks << lambda { |pc| sleep 1 }
但这只会将我的请求变成错误:
ArgumentError: wrong number of arguments (2 for 0)
即使开始浏览机械化代码,到目前为止对我来说也收效甚微。
任何意见和学习指导表示赞赏。
Using Mechanize, I need to find some way to limit requests to 1 per second(or 1 every 5 seconds, or 2 every minute, etc the point is find some way to rate limit requests).
Searching, this seems to be the way to begin to approach the issue: pre/post connect hooks. Only I don't exactly know what to do with them or how to approach, I'm guessing from my level and research I need to do a lambda or proc that says 'hey wait a second', seems basic enough.
My question is basically for an example or another clue on how to do this. I tried several lambdas(and I'm at a low level of understanding in what exactly this would do):
@agent.pre_connect_hooks << lambda { |pc| sleep 1 }
but this just turns my requests to errors:
ArgumentError: wrong number of arguments (2 for 0)
Even beginning to go through the mechanize code yields little for me so far.
Any input and learning guidance appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你的 lambda 需要 2 个参数:
Your lambda needs 2 arguments:
使用
Proc
代替:@agent.pre_connect_hooks << Proc.new { 睡眠 1 }
Use a
Proc
instead :@agent.pre_connect_hooks << Proc.new { sleep 1 }
您还可以传递
方法
:You may also pass a
Method
: