Ruby on rails 为什么这个简单的PUT请求超时?

Ruby on rails 为什么这个简单的PUT请求超时?,ruby-on-rails,heroku,Ruby On Rails,Heroku,Heroku对请求的硬限制为30秒。您的请求在(服务=30001ms)时被终止,因此方法中的一个步骤就是问题 看起来可能是数据库超时(可能是因为奇怪的死锁或其他阻塞),或者异步作业返回的速度没有您想象的那么快 如果您使用的是NewRelic或Skylight,您可以更深入地查看请求,看看是什么 这是怎么回事。您也可以从控制台运行命令。在这种情况下,异步作业不应该被命中——我只是更新一个模型属性。是否有可能触发(和超时)的模型回调 def convert_vend_types_param

Heroku对请求的硬限制为30秒。您的请求在(服务=30001ms)时被终止,因此方法中的一个步骤就是问题

看起来可能是数据库超时(可能是因为奇怪的死锁或其他阻塞),或者异步作业返回的速度没有您想象的那么快

如果您使用的是NewRelic或Skylight,您可以更深入地查看请求,看看是什么
这是怎么回事。您也可以从控制台运行命令。

在这种情况下,异步作业不应该被命中——我只是更新一个模型属性。是否有可能触发(和超时)的模型回调
def convert_vend_types_param
    if params[:schedule_machine][:vend_types].present?
      vend_types = []
      params[:schedule_machine][:vend_types].each_pair do |vt, active|
        vend_types << vt.to_sym if active.to_i > 0
      end
      params[:schedule_machine][:vend_types] = vend_types
    end
  end

api :PUT, "/v1/schedules/:schedule_id/schedule_machines/:id", "Update a schedule machine"
  param_group :schedule_machine
  error :code => 422
  def update
    convert_vend_types_param

    if params[:schedule_machine]
      if params[:schedule_machine][:products_returned_at]
        new_date = params[:schedule_machine][:products_returned_at]
        if @schedule_machine.products_returned_at == nil || new_date.to_date > @schedule_machine.products_returned_at.to_date
          ScheduleMachineProductCounterJob.new.async.perform(@schedule_machine.id)
        end
      end
    end

    unless @schedule_machine.update_attributes(params[:schedule_machine])
      render(json: { error: 'Invalid schedule machine information' }, status: :unprocessable_entity) and return
    end

    render :show
  end
2015-01-13T17:52:06.437358+00:00 app[web.1]:   Parameters: {"token"=>"mytoken", "schedule_machine"=>{"remove_verified_at"=>"2015-01-13"}, "schedule_id"=>"58", "schedule_location_id"=>"2178", "id"=>"4874"}
2015-01-13T17:52:06.437292+00:00 app[web.1]: Processing by Api::V1::ScheduleMachinesController#update as JSON
2015-01-13T17:52:07.441605+00:00 app[web.1]:   Rendered api/v1/schedule_machines/show.json.rabl (740.3ms)
2015-01-13T17:52:10.681136+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=PUT path="/api/v1/schedules/58/schedule_locations/2178/schedule_machines/4874.json" host=myapp.herokuapp.com request_id=1e4ea64a-8552-4e5d-8580-3c2a8d04ec49 fwd="107.77.72.114" dyno=web.1 connect=2ms service=30001ms status=503 bytes=0