根据ActiveJob文档,要排队作业应使用
perform_later
。Sidekiq文档实现了perform_async
,但是ActiveJob部分的文档建议使用perform_later
。我之前在Rails中使用过perform_async
,所以这两者有什么不同还是只是惯例?
perform_async
提供了perform_later
没有的功能吗?如果我需要从Sidekiq移动到不同的队列后端,那么选择perform_later
会更好。 - sloneorzeszkiperform_async
中获取的某些东西perform_later
没有提供,你可以肯定地实现你需要的内容。使用ActiveJob是一个好习惯,你不需要担心后台处理方法,只需使用单一接口编码并更改提供程序即可。当然,你也可以直接使用Sidekiq而不需要ActiveJob,但如果将来需要更改到另一种处理方法,这将成为一个问题。 - arieljuod