어쩌면 내 스케줄러 일 수도 있습니다. 그러나 어떤 이유로 스케줄 된 태스크가 두 번 실행되거나 DB에 두 버전을 저장하고 있습니다. 여기 내 코드는 다음과 같습니다rufus 스케줄러가 매번 두 번 실행됩니다.
report.rb :
def record_page_stats!
oauth = Koala::Facebook::OAuth.new
@api = Koala::Facebook::API.new oauth.get_app_access_token
@fb_page = @api.get_object(self.fb_page_id)
self.page_stats.new(like_count: @fb_page["likes"], talking_about_count: @fb_page["talking_about_count"])
self.save
end
과 scheduler.rb :
require 'rufus-scheduler'
scheduler = Rufus::Scheduler.new
scheduler.every '10m' do
Report.where(tracking_page: true).each do |report|
report.record_page_stats!
end
end
내가 정말 뭔가를 분명 실종? 여기에 저장된 페이지 통계 데이터베이스의 출력입니다 : 두 번 10 분마다
2013-12-20 18:43:06 UTC = 8304 likes and 229 talking about count
2013-12-20 18:43:08 UTC = 8304 likes and 229 talking about count
2013-12-20 18:53:06 UTC = 8304 likes and 229 talking about count
2013-12-20 18:53:08 UTC = 8304 likes and 229 talking about count
2013-12-20 19:03:06 UTC = 8304 likes and 229 talking about count
2013-12-20 19:03:08 UTC = 8304 likes and 229 talking about count
2013-12-20 19:13:06 UTC = 8304 likes and 229 talking about count
2013-12-20 19:13:08 UTC = 8304 likes and 229 talking about count
2013-12-20 19:23:07 UTC = 8304 likes and 229 talking about count
2013-12-20 19:23:33 UTC = 8304 likes and 229 talking about count
2013-12-20 19:33:06 UTC = 8304 likes and 229 talking about count
2013-12-20 19:33:32 UTC = 8304 likes and 229 talking about count
당신이 타임 스탬프에 의해 볼 수 있듯이, 그것은 실행
편집 : 난 그냥 다시 데이터를 보았다
... 그리고 스케줄러는 몇 번 타이밍을 변경 : 각 10 분이 두 번 연속 작업을 실행,
- 먼저
- N, 그것은 일단 십분 후 당 한번 오분 후
- 당이 전환하도록 전환하는 전환 두배 5분
EDIT 2 당 : 고정 후 새로운 출력 :
2013-12-20 22:14:22 UTC = 176155 likes and 5757 talking about count
2013-12-20 22:14:24 UTC = 176155 likes and 6994 talking about count
내 파일이 지금과 같은
:
에서 그러나require 'rufus-scheduler'
scheduler = Rufus::Scheduler.new(:lockfile => ".rufus-scheduler.lock")
scheduler.every '10m' do
Report.where(tracking_page: true).each do |report|
report.record_page_stats!
end
log "started Scheduler #{scheduler.object_id}"
end
그는 roku에 오류가 있습니다.
2013-12-20T22:44:42.625951+00:00 app[worker.1]: 70149016354440 job:
2013-12-20T22:44:42.625951+00:00 app[worker.1]: 70149016354440 Rufus::Scheduler::EveryJob "10m" {}
2013-12-20T22:44:42.625951+00:00 app[worker.1]: { 70149016354440 rufus-scheduler intercepted an error:
2013-12-20T22:44:42.625951+00:00 app[worker.1]: 70149016354440 error:
2013-12-20T22:44:42.625951+00:00 app[worker.1]: 70149016354440 70149016354440
2013-12-20T22:44:42.625951+00:00 app[worker.1]: 70149016354440 ArgumentError
2013-12-20T22:44:42.625951+00:00 app[worker.1]: 70149016354440 wrong number of arguments (1 for 0)
2013-12-20T22:44:42.625951+00:00 app[worker.1]: 70149016354440 /app/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/globals.rb:16:in `log'
2013-12-20T22:44:42.625951+00:00 app[worker.1]: 70149016354440 /app/vendor/bundle/ruby/2.0.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:224:in `call'
2013-12-20T22:44:42.626163+00:00 app[worker.1]: 70149016354440 /app/vendor/bundle/ruby/2.0.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:224:in `do_trigger'
2013-12-20T22:44:42.626163+00:00 app[worker.1]: 70149016354440 /app/vendor/bundle/ruby/2.0.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:269:in `block (3 levels) in start_work_thread'
2013-12-20T22:44:42.626163+00:00 app[worker.1]: 70149016354440 /app/vendor/bundle/ruby/2.0.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:272:in `call'
2013-12-20T22:44:42.626163+00:00 app[worker.1]: 70149016354440 /app/vendor/bundle/ruby/2.0.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:272:in `block (2 levels) in start_work_thread'
2013-12-20T22:44:42.626163+00:00 app[worker.1]: 70149016354440 /app/vendor/bundle/ruby/2.0.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:258:in `loop'
2013-12-20T22:44:42.626163+00:00 app[worker.1]: 70149016354440 /app/vendor/bundle/ruby/2.0.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:258:in `block in start_work_thread'
2013-12-20T22:44:42.626163+00:00 app[worker.1]: } 70149016354440 .
2013-12-20T22:44:42.625951+00:00 app[worker.1]: 70149016354440 /app/config/initializers/scheduler.rb:9:in `block in <top (required)>'
2013-12-20T22:44:44.472460+00:00 app[web.1]: { 69970029016200 rufus-scheduler intercepted an error:
2013-12-20T22:44:44.472460+00:00 app[web.1]: 69970029016200 job:
2013-12-20T22:44:44.472460+00:00 app[web.1]: 69970029016200 Rufus::Scheduler::EveryJob "10m" {}
2013-12-20T22:44:44.472615+00:00 app[web.1]: 69970029016200 ArgumentError
2013-12-20T22:44:44.472615+00:00 app[web.1]: 69970029016200 wrong number of arguments (1 for 0)
2013-12-20T22:44:44.472615+00:00 app[web.1]: 69970029016200 /app/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/globals.rb:16:in `log'
2013-12-20T22:44:44.472615+00:00 app[web.1]: 69970029016200 /app/vendor/bundle/ruby/2.0.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:224:in `call'
2013-12-20T22:44:44.472615+00:00 app[web.1]: 69970029016200 /app/vendor/bundle/ruby/2.0.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:224:in `do_trigger'
2013-12-20T22:44:44.472615+00:00 app[web.1]: 69970029016200 /app/vendor/bundle/ruby/2.0.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:269:in `block (3 levels) in start_work_thread'
2013-12-20T22:44:44.472615+00:00 app[web.1]: 69970029016200 /app/vendor/bundle/ruby/2.0.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:272:in `call'
2013-12-20T22:44:44.472615+00:00 app[web.1]: 69970029016200 /app/vendor/bundle/ruby/2.0.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:272:in `block (2 levels) in start_work_thread'
2013-12-20T22:44:44.472615+00:00 app[web.1]: 69970029016200 /app/vendor/bundle/ruby/2.0.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:258:in `loop'
2013-12-20T22:44:44.473000+00:00 app[web.1]: 69970029016200 /app/vendor/bundle/ruby/2.0.0/gems/rufus-scheduler-3.0.3/lib/rufus/scheduler/jobs.rb:258:in `block in start_work_thread'
2013-12-20T22:44:44.472460+00:00 app[web.1]: 69970029016200 error:
2013-12-20T22:44:44.472460+00:00 app[web.1]: 69970029016200 69970029016200
2013-12-20T22:44:44.472615+00:00 app[web.1]: 69970029016200 /app/config/initializers/scheduler.rb:9:in `block in <top (required)>'
2013-12-20T22:44:44.473000+00:00 app[web.1]: } 69970029016200 .
, 내가 말하는 'XYZ "로그인" "같은"'. 나는 "정확히 이것을 입력하십시오"라고 말하지 않습니다. 만약 당신이 여기에 직접 붙여 넣는 대신에 오류를 읽을 시간을 가졌다면 (생각없이 코드에 내 제안을 직접 붙여 넣은 것처럼) 아마도 뭔가를 배웠을 것입니다. Heroku에서 실행중인 Rails 응용 프로그램에서 로그하고 올바른 설명을 해주길 원하십니까? 나는 당신이 초기 이슈 리포트가 로그 출력을 특징으로하기 때문에 로그하는 방법을 알고 있다고 가정했다. -1 – jmettraux
그리고 스케줄러 초기화 직후에 스케줄 된 작업의 내부에 "시작된 스케줄러"메시지를 넣었다. 얼마나 많은 스케줄러가 작동하는지 확인하려면 10 분을 기다려야합니까? 그리고 그 오류를보기 위해 10 분을 기다렸지 만 복사 붙여 넣기가 항상 좋은 아이디어는 아님을 깨닫지 못했습니까? grrrr .... – jmettraux
긍정적 인 점 하나 : 붙여 넣은 로그는 두 프로세스가 "worker.1"및 "web.1"을 실행 중임을 보여줍니다. 귀하의 두 스케줄러. rufus-scheduler에는 아무런 문제가 없습니다. – jmettraux