gpt4 book ai didi

ruby-on-rails - 使用 Rails 运行多个后台并行作业

转载 作者:数据小太阳 更新时间:2023-10-29 06:54:14 25 4
gpt4 key购买 nike

在我的 Ruby on Rails 应用程序中,我需要并行执行 50 个后台作业。每个作业都会创建一个到不同服务器的 TCP 连接,提取一些数据并更新事件记录对象。

我知道执行此任务的不同解决方案,但其中任何一个都是并行的。例如,delayed_job (DJ) 可能是一个很好的解决方案,只要它可以并行执行所有作业。

有什么想法吗?谢谢。

最佳答案

实际上可以运行多个 delayed_job worker。

来自 http://github.com/collectiveidea/delayed_job :

# Runs two workers in separate processes.
$ RAILS_ENV=production script/delayed_job -n 2 start
$ RAILS_ENV=production script/delayed_job stop

因此,理论上,您可以执行:

$ RAILS_ENV=production script/delayed_job -n 50 start

这将产生 50 个进程,但我不确定是否会推荐这样做,具体取决于您运行它的系统的资源。


另一种选择是使用 threads .只需为您的每个作业生成一个新线程。

使用此方法需要注意的一点是 ActiveRecord 不是线程安全的。您可以使用以下设置使其成为线程安全的:

ActiveRecord::Base.allow_concurrency = true

关于ruby-on-rails - 使用 Rails 运行多个后台并行作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1606028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com