put_connections() 到 Koala 中的 Facebook 图在很长的延迟后失败

2024-03-15

我正在使用 Rails 3.2.5 和 Koala 1.3.0(不是最新的,因为最新的甚至拒绝运行 Heroku 的示例 Facebook 应用程序)。 Web 服务器是 Unicorn。

当我尝试使用 put_connections() 发布到时间线时:

@fbgraph   = Koala::Facebook::API.new(session[:access_token])
logger.debug "put_connections(#{url_for @room}), start"
@fbgraph.put_connections("me", "myapp:view", :room => url_for(@room))
logger.debug "put_connections(), end"

控制器在收到异常之前停滞 12 秒:

Completed 500 Internal Server Error in 12075ms

Koala::Facebook::APIError (HTTP 500: Response body: {"error":{"type":"Exception","message":"Could not retrieve data from URL.","code":1660002}}):

我用调试工具测试过:http://developers.facebook.com/tools/debug http://developers.facebook.com/tools/debug并且发现第 2 行中记录的 URL 没有错误。

我的网络服务器记录来自 Facebook IP 的 GET 并返回 200 OK。然后 Facebook IP 发出更多请求来获取图像,也得到 200 OK。

我正在对我的应用程序的测试用户进行测试,仅供参考。

UPDATE

这似乎是一个 OpenGraph 问题。这个问题为我重现:https://developers.facebook.com/bugs/213733412077729 https://developers.facebook.com/bugs/213733412077729

基本上只有在调试器上测试一次后POST才成功!以前有人经历过这个吗?


弄清楚了。当然,调试器的事情没有意义。它之所以有效,是因为 Facebook 可以查看我对其缓存的看法。

这是一个经典的重入问题(我不敢相信我必须在 Rails 中处理这个问题!)——Facebook 的 POST API 是同步的,只有在回调到我的显示控制器后才返回。但由于我只有 1 个工作线程,因此没有人服务该请求,因此挂起。

修复方法是在线程中异步调用 API。

Thread.new {
    @fbgraph.put_connections("me", "myapp:view", :room => url_for(@room))
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

put_connections() 到 Koala 中的 Facebook 图在很长的延迟后失败 的相关文章

  • Mongoid - 同一外域的两个域的逆

    我试图让以下 Mongoid 关系发挥作用 但每个团队的游戏字段都是一个空数组 这不是一个有效的关系模型吗 我是否需要分开比赛 即主场比赛和客场比赛 class Team include Mongoid Document has many
  • 如何阻止与 RSpec 和 Capybara 的外部连接?

    在我的 Rails 项目中 我想编写非理想条件的测试 例如缺乏互联网连接或超时 例如 我正在使用 gem 来联系 API 并且希望确保在我的应用程序和外部 API 之间存在连接问题时能够正确处理错误 我已经可以通过用录像机制作固定装置并从
  • 在 Rails 6 上定义 Secret_key_base 的正确方法是什么?

    正确的定义方式是什么secret key base既然我们已经有了每个环境的凭据 就可以在 Rails 6 上使用了吗 我的环境有变量SECRET KEY BASE但 Rails 并没有接受它 我尝试定义secret key base in
  • 渲染:带参数的动作

    我有一个有 2 种方法的类 第一个方法由视图使用一些 GET 参数 params page 调用 我想保存这些参数并通过渲染操作将它们发送到我的第二个方法 class exemple def first sql save of params
  • Mongoid 中的 find_or_create_by 线程安全吗?

    我有一个使用 Mongoid 的 find or create by 方法的网络应用程序 poll Poll find or create by fields 在投入生产之前 我尝试运行故障场景 我发现多个用户可以尝试使用此方法访问此资源
  • 从 url 导入 CSV Errno::ENAMETOOLONG: 文件名太长

    我正在尝试从 url 导入 CSV 文件 但我得到了Errno ENAMETOOLONG file name too long 我按如下方式处理该文件 require open uri url http de65 grepolis com
  • Rails 注释分段错误

    有一些问题围绕着这个问题 但没有什么真正能满足我的需求 After I bundle install下面列出了我的 Gemfile 我运行annotate并出现以下错误 Users nickcoelius rvm gems ruby 1 8
  • 在私有控制器方法中返回redirect_to

    前言 我正在使用设备进行身份验证 我试图阻止未经授权的用户查看 编辑或更新其他用户的信息 我最关心的是用户将 DOM 中的表单修改为另一个用户的 ID 填写表单 然后单击更新 我已经专门阅读过 像下面这样的东西应该有效 但事实并非如此 SO
  • 使用 Ajax 在输入时提交 Textarea,然后渲染部分内容而不刷新整个页面

    目前我正在尝试通过 JS 和 Ajax 在没有提交按钮的情况下发表评论 并且它有效 问题是当帖子提交时 页面重新加载到 post id comment页面 我希望它呈现部分内容 而不是刷新整个页面或将我带到不同的页面 我对 JS 不熟悉 任
  • vs2008 c#:Facebook.rest.api如何使用它来获取好友列表?

    如何在此基础上取得进一步的进步 获取好友列表的下一步是什么 string APIKey ConfigurationManager AppSettings API Key string APISecret ConfigurationManag
  • 将 Rails 变量传递给液体可以在控制台中工作,但不在视图中

    我想将哈希传递给渲染方法 当我这样做时 在我的控制台中一切正常 object Object find params id hash object object to liquid template Liquid Template parse
  • 在android中从SD卡上传图像到facebook

    我无法从 SD 卡上传 Facebook 上的图像 我使用了下面的代码 但它没有给我错误 但同时它没有上传图像 byte data null try FileInputStream fis new FileInputStream filep
  • Capistrano 和 XSendFile 配置

    我正在尝试使用 Apache 2 2 Passenger 4 0 59 和 XSendFile 0 12 配置 Rails 生产服务器 应用程序通过 Capistrano 部署 部署的应用程序生成 可能很大 PDF Rails root t
  • Rails 控制台无法运行

    rbenv 红宝石版本 2 6 6 导轨版本 5 1 4 我正在较旧的代码库中工作 ruby 2 6 6 rails 5 4 1 这是我每天使用的代码库 我必须通过 rbenv 下载一个新的 ruby 版本作为单独的存储库 这样做在我的旧代
  • Rails 3 在 Ruby 1.9.2 上初始化非常慢

    我使用 RVM 来管理环境 安装了 Ruby 1 9 2 p136 我认为是最新版本 和 Rails 3 创建了 gemset 并运行捆绑器 到目前为止一切正常 但 Rails 在运行命令 即生成 销毁 rake 等 时初始化速度非常慢 完
  • 仅删除多对多关系

    我有一个 has and belongs to many friends join table gt friends peoples 要添加朋友 我会这样做 people followers lt lt friend这会创建关系和新的个人资
  • Rails/Nginx 中的超时——最佳实践

    我正在开发一个应该在 Nginx 服务器上运行的 Rails 应用程序 根据输入 应用程序可能需要很长时间来处理请求 或者在出现错误时挂起 因此我想防止进程永远运行 除了确保客户端收到超时信号的 Nginx 配置之外 我想我可能仍然需要确保
  • 我在 Rails 中使用了保留字吗?

    这是我的模型 class Record lt ActiveRecord Base belongs to user belongs to directory end class Directory lt ActiveRecord Base h
  • 使用 Ruby aws-sdk 跟踪文件到 S3 的上传进度

    首先 我知道SO中有很多与此类似的问题 在过去的一周里 我读了大部分 如果不是全部 但我仍然无法让这项工作为我工作 我正在开发一个 Ruby on Rails 应用程序 允许用户将 mp3 文件上传到 Amazon S3 上传本身工作正常
  • 即使在急切加载之后,belongs_to 关联也会单独加载

    我有以下关联 class Picture lt ActiveRecord Base belongs to user end class User lt ActiveRecord Base has many pictures end 在我的

随机推荐

  • 在 Cypress 中如何根据名称选择输入元素?

    我开始学习Cypress 我想使用 cypress io 选择输入字段并提供电话号码 我遵循的代码但它不起作用 但是我可以使用 find 还是有其他方法让输入元素输入电话号码 cy get div contains Phone Number
  • LINQ To SQL 动态选择

    有人可以告诉我如何指示我希望在运行时从 LINQ To SQL 语句返回哪些列吗 我允许用户在复选框列表中选择项目 这些项目代表他们希望在绑定到 L2S 查询结果的网格视图中显示的列 我能够动态生成 W HERE 子句 但无法对 SELEC
  • 如何使用 cURL 从 GitHub 下载 tarball?

    我正在尝试使用以下命令从 GitHub 下载 tarballcURL http en wikipedia org wiki CURL 但它似乎没有重定向 curl insecure https github com pinard Pymac
  • 错误:属性“颜色”已定义,更新 appcompat v-7

    我正在尝试将 Android Studio 项目中的 appcompat v7 从 v20 0 0 更新到 21 0 0 以使用材料设计组件 但我总是遇到相同的错误 错误 属性 颜色 已被定义 我不知道如何修复此错误 我在互联网上搜索但无法
  • Python:如何删除['和']?

    我想删除 从一开始和 从字符串末尾开始的字符 这是我的文字 45453656565 我需要这样的文字 45453656565 我尝试过使用str replace text text replace 但它不起作用 您需要通过将不需要的字符传递
  • 为什么 main() 需要大括号?

    我尝试了几种变体 main return or main if 并得到了不同的错误 其中最奇特的是 usr lib gcc i686 linux gnu 4 4 5 lib crt1 o In function start text 0x1
  • ANDROID STUDIO 无法访问fragment_main.xml中的对象

    我有一个简单的 Android 应用程序 布局文件夹显示一个activity main xml 文件和一个fragment main xml 文件 在该fragment xml 文件中 我放置了一个名为buttonTest 的按钮
  • Watchkit 动画实现:钟面、动画图表、圆形进度条

    我看过一些潜在 Watchkit 应用程序的非常基本的演示 其中一些似乎实现了动画 示例可能是 带有移动秒针甚至分针的钟面 条形图 其中的条形会随着新的实时数据进行动画显示或形状发生变化 圆形进度条 其进度条从零到当前值进行动画处理 到目前
  • [电子邮件受保护] 适用于 iPhone5

    我想更新我的应用程序 以便可以将其部署在 iPhone 5 上 Xcode 4 5 有一个 电子邮件受保护 cdn cgi l email protection这是一个黑色图像 640X1136 在iPhone5的模拟器中 仍然加载旧的 电
  • Rspec等于法

    据我了解 equal 方法检查对象是否相同 person Person create name gt David Person find by name David should equal person 这应该是真的 但这里不是有两个不同
  • 如何执行boost.test库中指定的测试套件

    我正在使用 Boost Test 库在 C 中实现单元测试用例 假设我有两间套房 例如 BOOST AUTO TEST SUITE TestA BOOST AUTO TEST CASE CorrectAddition BOOST CHECK
  • GWT:我如何重命名我的模块

    我想将下面的模块名称从 test 重命名为testing 但是当我将其从重构更改为测试时 它说 unable to find test gwt xml 它仍在寻找以前的模块名称 我该如何解决这个问题 thanks9
  • 调整变量跟踪分配长度

    在发布版本中 我从 GCC 4 4 7 收到以下信息警告 注意 使用 fvar tracking assignments 超出变量跟踪大小限制 重试而不使用 我是否超出了变量跟踪分配支持的变量名称长度 如果是的话 有没有办法调整支持的大小
  • Scipy/Pylab 错误..预期在:动态查找?

    在 OS X 上的 python 2 7 上使用全新的 Scipy numpy matplotlib 构建 我正在尝试import pylab但它似乎不起作用 为什么是这样 我收到的错误是 gt Traceback most recent
  • 我应该写 (x == 1) 或 (1 == x) 来检查值是否等于 1 吗? [复制]

    这个问题在这里已经有答案了 我想检查一个值是否等于1 以下代码行有什么不同吗 x 1 1 x 就编译器执行而言 在大多数语言中都是一样的 人们经常做 1 评估值 因为 1 不是左值 这意味着您不会意外地完成任务 Example if x 6
  • 渲染时捕获 TypeError:__init__() 得到意外的关键字参数“use_decimal”

    运行程序时我收到以下错误消息 Caught TypeError while rendering init got an unexpected keyword argument use decimal 这是我的代码 我正在使用 jquery
  • 从sql server下载varbinary数据

    我有一个 SQL Server 表 其中包含Varbinary Max 基本上是压缩数据的列 我的页面允许用户下载此数据 在通常的用户身份验证之后 以前它工作得很好 数据量较小 但现在随着时间的推移 数据也越来越大 我面临很多问题 基本上是
  • 在 Resharper 中重新绑定 Control+LeftClick

    我希望 Resharper 中的 Control LeftClick 绑定到 转到实现 而不是 转到声明 这是因为我使用很多接口 并且大多数时候我想访问实现而不是接口声明 有什么办法可以做到这一点吗 我知道关于ReSharper Optio
  • -Uri -UseBasicParsing powershell

    如果我使用这个 一切都好 脚本得到了我想要看到的数据 Wcl new object System Net WebClient Wcl Headers Add xxxxx xxxxx Wcl Proxy Credentials System
  • put_connections() 到 Koala 中的 Facebook 图在很长的延迟后失败

    我正在使用 Rails 3 2 5 和 Koala 1 3 0 不是最新的 因为最新的甚至拒绝运行 Heroku 的示例 Facebook 应用程序 Web 服务器是 Unicorn 当我尝试使用 put connections 发布到时间