gpt4 book ai didi

perl - beanstalkd 的条件工作队列插入?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:15:51 24 4
gpt4 key购买 nike

我正在使用 beanstalkd 的 Perl 客户端。我需要一种简单的方法来避免将相同的工作排入队列两次。

我需要的东西基本上需要等到有K个元素,然后把它们组合在一起。为此,我有制作人:

insert item(s) into DB
insert a queue item into beanstalkd

消费者:

while ( 1 ) {
beanstalkd.retrieve
if ( DB items >= K )
func_to_process_all_items
kill job
}

这与请求/处理的数量成线性关系,但在以下情况下:

insert 1 item
... repeat many times ...
insert 1 item

假设所有这些插入都发生在检索作业之前,这将添加 N 个队列项,并且它会执行以下操作:

check DB, process N items
check DB, no items
... many times ...
check DB, no items

是否有更聪明的方法来执行此操作,以便它不会不必要地插入/处理后面的作业请求?

最佳答案

我有一个相关的要求。我只想在几分钟内处理一次特定的作业,但生产者可以对同一作业的多个实例进行排队。我使用内存缓存来存储作业标识符并将 key 的到期时间设置为几分钟。

当工作人员尝试将作业标识符添加到内存缓存时,只有第一次会成功 - 如果添加作业 ID 失败,工作人员将删除该作业。几分钟后, key 从内存缓存中过期,可以再次处理作业。

不是特别优雅,但它确实有效。

关于perl - beanstalkd 的条件工作队列插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1955082/

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