gpt4 book ai didi

ruby-on-rails-3 - Ruby On Rails : Instagram gem, 无法到达回调 url

转载 作者:行者123 更新时间:2023-12-04 07:17:18 25 4
gpt4 key购买 nike

我一直在使用 Instagram gem 和实时 API 看到一些有趣的行为,我正在尝试创建一个基本应用程序来创建订阅并处理 Instagram 的响应。下面是创建订阅并将标签名称保存到我的数据库的代码。

  def create
@subscription = Subscription.new params[:subscription]
options = {:object_id => params[:subscription][:tag_name]}

if @subscription.save
Instagram.create_subscription('tag', "http://myapp.herokuapp.com/subscriptions/process_subscription/", aspect = 'media', options)
redirect_to "/subscriptions/tag/#{@subscription.tag_name}"
end

注意回调 url 在 heroku 上,这是可以访问的,有趣的是,当我在 heroku 域上访问 subscriptions/new 时,Instagram API 给了我一个“Bad Request, Unable to reach回调地址”。当我使用相同的回调 url 通过 curl 创建订阅时,一切都按预期工作,当我转到我的本地主机上的 subscriptions/new(设置相同的回调 url)时,它也按预期工作。以下是 process_subscription 操作:

def process_subscription
if params["hub.challenge"]
render :text => params["hub.challenge"]
else
PrivatePub.publish_to("/subscriptions/tag/#{params[:object_id]}", payload: params[:_json])
end
end

第一个 if 语句将处理 pubsubhubub 挑战。实际创建订阅后,接收和处理有效负载就没有问题了。所以现在我唯一能想到的是,当我在 heroku 域时,当 Instagram 发回服务器进程时,服务器进程不知何故很忙,我不明白这怎么可能,所以任何建议都将不胜感激。

这是订阅成功和失败时服务器日志的链接。请注意,我正在注销这些日志中的帖子参数。 https://gist.github.com/4256108 .

最佳答案

经过反复试验,当 Instagram 将其 hub.challenge 发回应用程序时,问题看起来越来越像 Rails 进程繁忙,导致“请求错误,无法到达回调 URL”错误。

对我有用的是使用另一个线程创建 Instagram 订阅,这样 Instagram 几乎可以立即成功访问我的应用程序并到达我的回调 url。这个解决方案是最快和最轻量级的,也许在 Heroku 上购买一个左右的 worker 并通过 Sidekiq 或其他东西将其转移到后台进程中是有益的,但这对于仅响应集线器挑战似乎有点过分了。

  def instagram_photos
Thread.new do |t|
options = {:object_id => params[:tag_name]}
Instagram.create_subscription('tag', "http://myapp.herokuapp.com/subscriptions/process_subscription", aspect = 'media', options)
t.exit
end
redirect_to root_path
end

关于ruby-on-rails-3 - Ruby On Rails : Instagram gem, 无法到达回调 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13814180/

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