这是一份积极的工作:
# app/jobs/upload_evidence_job.rb
class UploadEvidenceJob < ApplicationJob
queue_as :default
def perform(*args)
UploadRequest.pull_messages
...
end
end
这是我随时使用的配置文件:
set :output, "log/cron_log.log"
env :PATH, ENV['PATH']
every 1.minutes do
runner 'UploadEvidenceJob.perform_later'
end
我正在运行以下命令以用cron编写,效果很好。
$ whenever --update-crontab --set environment=development
问题是该工作没有从cron调用,而在Rails控制台中工作。
我认为在执行cron时不会加载活动作业,我是否需要require
将其挂载在某个地方?
答案 0 :(得分:1)
首先请确保cron运行程序完全正常工作-在cron环境中有所不同,因为没有shell会话。例如,如果您使用的是RVM,则需要使用ruby binstubs,并且可能是bundle
命令的完整路径。
然后尝试手动运行所生成的cron命令(对于您在下面运行的用户,请参见crontab -l
)
每分钟也要旋转铁轨只是为了排队工作-并不是很理想,您可以使用sidekiq-scheduler
(如果使用的是sidekiq)或其他ruby调度程序来完成