我正在使用delayed_job来执行系统调用。此系统调用调用Groovy脚本。
class Job
def perform
command "groovy file.groovy"
system command
end
def success(job)
# handle success
end
def error(job, exception)
# handle error, exception
end
end
这一切都很完美,但我总是回到“成功”状态,因为我的常规总是正常退出。我目前在Groovy脚本中抛出RuntimeExeptions
来挑起失败的工作。当我调用system "groovy progra.groovy"
并引发异常(groovy程序引发异常)时,system
调用的返回值如预期false
。但是当通过delayed_job执行相同操作时,它永远不会访问def error
方法,而是访问def success
方法。
关于delayed_job如何实际控制perform
方法的返回,您有什么建议吗?什么时候进入error
或failure
钩子。不幸的是,我在文档中没有找到关于此主题的任何内容。
提前致谢
答案 0 :(得分:3)
你有没有试过这样的事情:
def perform
command = "groovy file.groovy"
system command || raise "Error executing command : #{command}"
end
我非常确定delayed_job将执行调用包装在一个救援块中,并根据它捕获的任何异常调用成功或错误。