我们在AWS Beanstalk中使用Rails 5.0.2和ActiveJobs作为gem的后端
active_elastic_job
.
我们的工作定义如下:
class MyJob < ActiveJob::Base
rescue_from(StandardError) do |exception|
self.class.set(:wait => 1.minutes).perform_later
end
def perform
MyLongTask.run
end
end
当工作环境中的一个实例被终止(由于自动伸缩或其他原因)时
rescue_from
不会执行,作业也不会发送回队列。
我们如何捕捉实例被调用被终止的那一刻,以便在我的进程真正被终止之前能够优雅地做出反应和结束?(如果可能)
更新
我在试这个
class MyJob < ActiveJob::Base
def perform
begin
sleep(100)
rescue SignalException => e
# send signal to some log place
raise e
end
end
end
但我从来没有发过日志
终止
当我用
$ restart puma