我正在运行Rails 5.1.4服务器(Puma v.3.10.0单模式),但是有一个特定的ActionJob出现了问题,它被正确地排队,但往往从未执行。
我有一些工作。除了1个特定的工作外,所有工作都会按预期异步执行,而且在排队后不久就会执行。
在服务器重新启动后第一次进行新的排队后,我的特定工作会被正确执行。但在第一次成功运行后,它将不会在随后的排队中执行。
我通常使用perform_later排队所有工作。
我也尝试使用rails console排队特定的工作。每当我在控制台中排队时,它会立即执行。甚至在同一会话中也是如此。还尝试使用应用程序中排队时使用的相同参数,在服务器上只排队,从未执行。
我已经检查了日志文件-没有任何错误、致命错误或警告。它只是简单地声明[ActiveJob] Enqueued FooBaaJob,但从未执行该工作。
如果作业实际上失败了,它至少应该在日志中写出
有任何想法在哪里查找?
我有一些工作。除了1个特定的工作外,所有工作都会按预期异步执行,而且在排队后不久就会执行。
在服务器重新启动后第一次进行新的排队后,我的特定工作会被正确执行。但在第一次成功运行后,它将不会在随后的排队中执行。
我通常使用perform_later排队所有工作。
我也尝试使用rails console排队特定的工作。每当我在控制台中排队时,它会立即执行。甚至在同一会话中也是如此。还尝试使用应用程序中排队时使用的相同参数,在服务器上只排队,从未执行。
我已经检查了日志文件-没有任何错误、致命错误或警告。它只是简单地声明[ActiveJob] Enqueued FooBaaJob,但从未执行该工作。
如果作业实际上失败了,它至少应该在日志中写出
[ActiveJob] [FooBaaJob] [id] Performing FooBaaJob
,但它没有。根据https://github.com/rails/rails/blob/master/activejob/lib/active_job/logging.rb#L78,如果作业失败,它应该捕获并记录异常。其次,在控制台中它从未运行失败,因此这不应该是问题所在。有任何想法在哪里查找?
async
(默认-未显式设置)和所有在default
队列中的作业。每当我尝试运行作业队列inline
时,它总是成功执行作业。 - mtrolleasync
会生成一个新的线程。 - Daniel Westendorfrails server
命令,没有额外的Puma配置。然而,除了这个特定的作业失败之外,我的所有其他作业都按预期运行。 - mtrolle