gpt4 book ai didi

ruby - 从 beanstalkd 队列中保留多个作业

转载 作者:太空宇宙 更新时间:2023-11-03 18:23:32 28 4
gpt4 key购买 nike

有没有一种方法可以同时从 beanstalkd 队列中保留多个作业?

我正在向外部 API 发出请求,每个查询最多可返回 10 个结果。他们限制了我每天可以提出的请求数量,因此我每次请求获得的结果越多越好。

我在文档中找不到任何提及此功能的信息,因此我正在使用此解决方法。有谁知道实现这一目标的更好方法?或者比 beanstalkd 更适合这项工作的工具?

loop do
sleep(0.3)

while @beanstalk.tubes[example].peek(:ready)
jobs = []

catch(:done) do
10.times do |i|
if @beanstalk.tubes[example].peek(:ready) then
job = @beanstalk.tubes[example].reserve(0)
jobs << job.body
job.delete
else
throw(:done)
end
end
end

process(jobs)

end
end

最佳答案

您可以通过调用 reserve 同时保留多个作业在删除或释放这些作业之前连续多次。

根据您提供的代码示例,它可能看起来像大致是这样的:

loop do
timeout = nil
jobs = []

begin
10.times do |i|
jobs << @beanstalk.tubes[example].reserve(timeout)
timeout = 0
end
rescue Beaneater::TimedOutError
# nothing to do
end

process(jobs.map{|j| j.body})

jobs.map do |job|
job.delete
end
end

关于ruby - 从 beanstalkd 队列中保留多个作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14330162/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com