sidekiq不服从循环逻辑

时间:2013-12-12 01:35:19

标签: ruby-on-rails backgroundworker sidekiq

我有一个sidekiq的“执行”方法,当我不使用工人时,它运行得很好。它会查看每个页面并浏览每个帖子。如果帖子比“since_date”旧,那么一切都应该停止。如果不是,它将继续,直到没有更多的数据(current_page.any?)。

但是,只要我打开一个工作人员来执行“执行”,它就不会遵循我的循环逻辑来结束。当我的逻辑说停止循环并且工作正常时,我最初在那里休息了。我想也许“休息”导致工人的问题,所以我真的重写了整个功能,不包括“休息”。事实证明,它仍然不遵守我的逻辑。这是我的代码:

begin
      current_page.each do |post|
        if Time.zone.parse(post["created_time"]) < Time.zone.at(since_date.to_i)
          continue_loop = false
        else
          process_post(post)
        end
      end
      current_page = current_page.next_page if continue_loop
    end while current_page.any? && continue_loop

基本上这一行:

if Time.zone.parse(post["created_time"]) < Time.zone.at(since_date.to_i)

如果确实如此,一切都应该停止。但是,该过程将继续,直到没有更多数据(当current_page.any?为false时)。这让我相信sidekiq如何与Time合作?

我在这里做错了什么?

编辑: 我查看了日志文件,结果发现sidekiq的工作人员认为这是1970年的Time.zone.at(since_date.to_i)。但是,如果没有工人,那么就可以使用相同的值读取日期。

0 个答案:

没有答案