机械化前/后连接钩

发布于 2025-01-03 18:24:49 字数 498 浏览 1 评论 0原文

使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

对不⑦ 2025-01-10 18:24:49

你的 lambda 需要 2 个参数:

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

Your lambda needs 2 arguments:

agent.pre_connect_hooks << lambda do |agent, request|
  sleep 1
end
迷离° 2025-01-10 18:24:49

使用 Proc 代替:

@agent.pre_connect_hooks << Proc.new { 睡眠 1 }

Use a Proc instead :

@agent.pre_connect_hooks << Proc.new { sleep 1 }

无人接听 2025-01-10 18:24:49

您还可以传递方法

def my_pre_hook(agent, request)
  # Do fun stuff.
end

agent.pre_connect_hooks << method(:my_pre_hook)

You may also pass a Method:

def my_pre_hook(agent, request)
  # Do fun stuff.
end

agent.pre_connect_hooks << method(:my_pre_hook)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文