- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我现在正在使用 EventMachine 玩了几天,恕我直言,它的学习曲线很陡;-) 我尝试通过触发回调中需要的 HttpHeaderCrawler.query() 来返回哈希。但是在这种情况下我得到的不是散列 {'http_status' => xxx, 'http_version' => xxx} 而是一个 EventMachine::HttpClient 对象本身。
我想保持 EM.run block 干净,并想在自己的类/模块中执行所有逻辑,那么如何将这样的值返回到主循环中以通过回调访问它?非常感谢 ;-)
#!/usr/bin/env ruby
require 'eventmachine'
require 'em-http-request'
class HttpHeaderCrawler
include EM::Deferrable
def query(uri)
http = EM::HttpRequest.new(uri).get
http.callback do
http_header = {
"http_status" => http.response_header.http_status,
"http_version" => http.response_header.http_version
}
puts "Returns to EM main loop: #{http_header}"
succeed(http_header)
end
end
end
EM.run do
domains = ['http://www.google.com', 'http://www.facebook.com', 'http://www.twitter.com']
domains.each do |domain|
hdr = HttpHeaderCrawler.new.query(domain)
hdr.callback do |header|
puts "Received from HttpHeaderCrawler: #{header}"
end
end
end
此代码段产生以下输出:
Returns to EM main loop: {"http_status"=>302, "http_version"=>"1.1"}
Received from HttpHeaderCrawler: #<EventMachine::HttpClient:0x00000100d57388>
Returns to EM main loop: {"http_status"=>301, "http_version"=>"1.1"}
Received from HttpHeaderCrawler: #<EventMachine::HttpClient:0x00000100d551a0>
Returns to EM main loop: {"http_status"=>200, "http_version"=>"1.1"}
Received from HttpHeaderCrawler: #<EventMachine::HttpClient:0x00000100d56280>
最佳答案
我认为问题是 #query
返回 http.callback
,它返回 http 对象本身,而它应该返回 self
,即HttpHeaderCrawler。看看这是否有效。
def query(uri)
http = EM::HttpRequest.new(uri).get
http.callback do
http_header = {
"http_status" => http.response_header.http_status,
"http_version" => http.response_header.http_version
}
puts "Returns to EM main loop: #{http_header}"
succeed(http_header)
end
self
end
关于Ruby EventMachine - 如何将值从 EM::Deferrable 返回到主 EM 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7910289/
可以在触发器中使用 DEFERRABLE 吗? DEFERRABLE 的概念是如何工作的? 它在整个事务期间然后在所有操作结束时检查约束? 最佳答案 看起来您的意思是 PostgresSql。一个DE
我的问题是,deferral.complete() 方法到底是做什么的,这个方法调用事件 task.Compledet,还是有办法调用一个我的类 BackgroundSyncer 中 Backgrou
我想从两个表中删除行,这两个表通过一组可延迟约束相互依赖。为了简化这篇文章,我模拟了一个简单的数据库架构。 我希望从 SQL 事务/数据库补丁中的某个表“delete_from_me”中删除条目。问题
我有一个类似于以下的函数: function refreshData() { service.getSettings().done(function (settings) {
我有以下操作来使用 node_redis 创建用户: server.post('/create_user', function(req, res, next) { console.log(req.b
使用 Doctrine2 和 PostgreSQL 我需要创建外键约束 DEFERRABLE 和 INITIALLY DEFERRED 在 Doctrine/DBAL/Platforms/Postgr
我可以使用以下查询添加 DEFERRABLE INITIALLY DEFERRED: ALTER TABLE user DROP CONSTRAINT unq_user_address, add CO
我正在尝试使用 postgresql 数据库为 django 中的表模型设置约束。 我可以用这句话通过 postgresql 来完成: ALTER TABLE public.mytable ADD C
关于 this answer我偶然发现了一个我无法解释的现象。 版本: x86_64-unknown-linux-gnu 上的 PostgreSQL 9.1.2,由 gcc-4.4.real (Deb
我下载了一个名为 jsdeferred 的库来尝试帮助我解决一些代码流问题,但我有点迷茫,因为它的示例和...“文档” 在某些事情上有点不清楚。但是当我继续阅读和挖掘,当然还有谷歌搜索阳光下的一切时,
我现在正在使用 EventMachine 玩了几天,恕我直言,它的学习曲线很陡;-) 我尝试通过触发回调中需要的 HttpHeaderCrawler.query() 来返回哈希。但是在这种情况下我得到
iOS playground 设置如此简单: import UIKit import SpriteKit import XCPlayground let s = CGSize(width: 300,
我尝试将 Django 连接到 Azure SQL,但在开始迁移命令时出现错误 KeyError: deferrable。我找不到此问题的解决方案。 我使用这个应用程序: asgiref==3.2.1
iced coffeescript 中的“过度使用延迟”警告是什么意思?当我在代码中抛出一个 Uncaught Error 时,它似乎会发生。我怎样才能让错误冒出来,因为我需要它是单元测试的未捕获错误
我正在尝试使用 Many:Many 与 Sequelize 的关联(针对 Postgre db)。 我想创建一个场所并将其与单个事务中的用户相关联。 field 和用户设置为正常的Sequelize模
I understand why the deferred parameter is needed, but the presence of two parameters 'initiallyD
我在 PostgreSQL 上使用 Fluent NHibernate,我想将 FOREIGN KEY 设置为 DEFERRABLE,但除了外键的名称外,我找不到自定义任何内容的方法。 谢谢。 最佳答
我是一名优秀的程序员,十分优秀!