我在控制器中有以下代码
user = RegUser.create_reg_user(:some_parameters)
UserStuff.pass_user(some_parameters)
@hex = user.hex
将@hex传递给视图并返回。 UserStuff调用占用了相当长的时间,对于视图所需的@hex实际上并不重要。有没有办法继续并返回@hex并加载视图并在之后让UserStuff进程?
答案 0 :(得分:2)
将这些长时间运行的“作业”卸载到后台队列。可能最简单的设置和运行是Delayed Job。
我们使用Beanstalkd(一个队列)和许多工作进程来处理所有长时间运行的任务(或任何花费超过1-2秒的任务)。
拥有后台系统来处理这类工作的好处在于,您可以快速扩展,您可以启动任何数量的工作进程,这些进程都从主队列中拉出作业(或者在延迟作业的情况下从DB中拉出作业) )。
答案 1 :(得分:0)
Delayed Job很好,而且易于使用。我推荐它。