【发布时间】:2020-02-25 06:05:51
【问题描述】:
我在后台运行一些函数,但现在我不想在后台运行这些函数,因为 perform 函数只返回一个作业 ID 我想显示错误消息,为什么特定作业失败。是否可以显示 sidekiq 作业失败的错误消息。
【问题讨论】:
-
这不是异步作业处理器的工作方式。它们是从共享代码库运行的两个独立应用程序;如果它们是单独的应用程序,它们将如何通信?如果您的 Rails 应用程序等待 Sidekiq 的响应,它会如何异步?典型的做法是让您的异步作业将一些返回值写入数据库,但如何从 Rails 读取这些值取决于您自己。如果您想通过在 Rails 中直接同步运行作业来获取作业的返回状态,您可以运行
Worker.new.perform(但这不是异步的) -
其实我的问题是如何将消息从工人返回到控制器方法?
-
你不能从异步工作者返回任何东西给 Rails。不是它是如何工作的。如果您需要执行一些逻辑并将其返回到您的控制器操作,那么要么执行
Worker.new.perform以同步运行它,要么将该代码移动到代码库的其他部分。 (这更有意义,因为如果它不打算异步运行,那么它不应该是 Sidekiq 工作人员)如果这对您没有意义,那么请提供代码示例,更清楚地解释您如何使用给定代码。 -
是的,现在我写了一个问题,他们正在调用该函数。谢谢@anothermh
标签: ruby-on-rails ruby