Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 当类似作业已经运行时,Ruby Resque会重新排队吗?_Ruby On Rails_Ruby_Asynchronous_Queue_Resque - Fatal编程技术网

Ruby on rails 当类似作业已经运行时,Ruby Resque会重新排队吗?

Ruby on rails 当类似作业已经运行时,Ruby Resque会重新排队吗?,ruby-on-rails,ruby,asynchronous,queue,resque,Ruby On Rails,Ruby,Asynchronous,Queue,Resque,所以我注意到这是为了防止作业排队。但是,如果我希望我的队列被完全填满,但我想在特定情况被锁定时重新排队,该怎么办呢。为了澄清这一点:因为我的队列由一堆主机组成(例如google.com、yahoo.com、yahoo.com和apple.com),所以我不希望两个相同的主机同时进入不同的worker!我该怎么做?我让resque锁工作,但我不认为它会帮助解决这个问题 示例: 队列: google.com yahoo.com apple.com apple.com stackoverflow.co

所以我注意到这是为了防止作业排队。但是,如果我希望我的队列被完全填满,但我想在特定情况被锁定时重新排队,该怎么办呢。为了澄清这一点:因为我的队列由一堆主机组成(例如google.com、yahoo.com、yahoo.com和apple.com),所以我不希望两个相同的主机同时进入不同的worker!我该怎么做?我让resque锁工作,但我不认为它会帮助解决这个问题

示例:

队列:

google.com
yahoo.com
apple.com
apple.com
stackoverflow.com
工人:

  • 2名工人正在找工作,他们找到了:google.com和yahoo.com(好的)
  • 两名员工正在寻找新工作,他们发现:apple.com和apple.com
  • 不好,请将第二个apple.com作业放回队列并继续

有没有关于如何处理这种行为的想法?我的示例描述了两个工人的情况,但主要思想是,具有相同主机的两个作业不能同时运行,无论工人数量如何。不允许运行的作业应该放回队列中。

我为此制作了自己的resque插件,名为。

我为此制作了自己的resque插件,名为。

问题:当你将作业重新排队时,它会回到队列中原来的位置,还是回到最末端?@Tilo最末端,否则其他作业将无法得到处理的更改。我有一个类似的问题,但所有作业(具有相同的锁值)都需要保持其排序顺序,因为它们包含的部分数据需要按其进入的顺序进行处理。@Tilo也许您可以在作业参数中跟踪顺序信息,但仍然异步处理作业?问题:当您将作业重新排队时,它会返回到队列中与原始位置相同的位置,还是返回到队列的最末端?@Tilo返回到队列的最末端,否则其他作业将不会得到处理的更改。我有一个类似的问题,但所有作业(具有相同的锁定值)需要保持它们的排序顺序,因为它们包含的部分数据需要按照它进入的顺序进行处理。@Tilo也许您可以跟踪作业参数中的顺序信息,并且仍然异步处理作业?