4

Sidekiq wiki中指出:

  1. 让您的工作变得小而简单

我变得简单,我变得幂等和事务性,但什么是小?也许所需的内存和计算时间是一个很好的衡量标准?我的 Sidekiq 工作需要10 秒到 30 分钟

我觉得 10 秒还可以,但是 30 分钟的长时间运行的任务呢?我正在将数据库中某种类型的所有数据加载到内存中,对它们运行冗长的计算,然后写回结果。一项工人工作中的所有三件事。

可以吗?或者我应该从一个工作者作业中调用,多个运行小计算的工作者作业?问题是,这些小计算可能需要一些复杂的哈希表来进行计算,建议不要在 Redis 中持久化,只需要小的简单值。

4

1 回答 1

7

这取决于您希望/必须多久调用一次作业,以及您是否可以接受需要这么长时间。

如果您以比完成时间更短的时间间隔运行作业,那肯定是太长了。

如果您可以提高总运行时间(例如,如果其中一些可以同时运行),那么将其拆分为多个工作人员只会在这里有所帮助

所以经验法则一如既往:只要它适合您的需要就可以了。

然而:

  • 对于长作业,您应该考虑到该作业可能会因任何原因(服务器崩溃等)而在执行过程中失败。
  • 你还能在那里继续这个漫长的工作还是会被正确地回滚?
  • 另外:如果在执行作业时更改了数据会发生什么?
于 2013-07-18T15:43:45.490 回答