首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在非机架中使用红宝石纤维?

如何在非机架中使用红宝石纤维?
EN

Stack Overflow用户
提问于 2014-01-13 08:19:01
回答 1查看 771关注 0票数 1

因此,基本上我的目标是获得一些轻量级的ruby守护进程(或sidekiq/resque worker),通过http处理作业和通知其他应用程序。该应用程序本身不需要接收http请求,因此没有架子保持尽可能轻的重量。我可以在循环{}中运行一些ruby代码。

所以试着不使用EventMachine的反应器模式,而是使用光纤方法。在这个上下文中,我应该把EM.run或EM.stop放在哪里? Thread.new { EM.run }似乎不知道光纤,所以添加它不会产生回调?除了这一点,还有同步性的替代方案吗?

代码语言:javascript
复制
#slow=true injects a sleep 3, so page 2 callback should output faster
require 'em-http-request'
require 'fiber'
def http_get(url)
  f = Fiber.current
  http = EventMachine::HttpRequest.new(url).get

  # resume fiber once http call is done
  http.callback { f.resume(http) }
  http.errback  { f.resume(http) }

  return Fiber.yield
end

puts "fetching some data from database for request params"
EventMachine.run do
  Fiber.new{
    page = http_get('http://localhost:3000/status?slow=true')
    puts "notified external page it responded with: #{page.response_header.status}"
  }.resume
  Fiber.new{
    page = http_get('http://localhost:4000/status')
    puts "notified external page 2 it responded with: #{page.response_header.status}"
  }.resume
  puts "Finishised notification task"
end
puts "Moving on to next task as fast as possible"
EN

回答 1

Stack Overflow用户

发布于 2014-01-20 12:49:30

避免重新发明车轮,使用艾米:同步性,或者更好地切换到赛洛尔赛洛普,因为EM似乎已经脱离了维护

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21086618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档