ruby-on-rails – 使用Rails运行多个后台并行作业
发布时间:2020-12-16 19:02:18 所属栏目:百科 来源:网络整理
导读:在我的 Ruby on Rails应用程序上,我需要并行执行50个后台作业.每个作业都创建到不同服务器的TCP连接,定义一些数据并更新活动记录对象. 我知道执行此任务的不同解决方案,但它们中的任何一个并行.例如,如果只有并行执行所有作业,delayed_job(DJ)可能是一个很好
在我的
Ruby on Rails应用程序上,我需要并行执行50个后台作业.每个作业都创建到不同服务器的TCP连接,定义一些数据并更新活动记录对象.
我知道执行此任务的不同解决方案,但它们中的任何一个并行.例如,如果只有并行执行所有作业,delayed_job(DJ)可能是一个很好的解决方案. 有任何想法吗?谢谢. 解决方法
一些想法……
>仅仅因为你需要阅读50个站点并且自然想要一些并行工作并不意味着你需要50个进程或线程.您需要平衡减速和开销.如果有10个或20个进程每个读取几个站点怎么样? 所以,来自套接字库的类似内容……将其扩展为多个未完成的连接…… require 'socket' include Socket::Constants socket = Socket.new(AF_INET,SOCK_STREAM,0) sockaddr = Socket.sockaddr_in(80,'www.google.com') begin socket.connect_nonblock(sockaddr) rescue Errno::EINPROGRESS IO.select(nil,[socket]) begin socket.connect_nonblock(sockaddr) rescue Errno::EISCONN end end socket.write("GET / HTTP/1.0rnrn") # here perhaps insert IO.select. You may not need multiple threads OR multiple # processes with this technique,but if you do insert them here results = socket.read (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |