1

我在这里有点迷路,正在寻找一些指导。我正在使用 ruby​​ aws-sdk (1.29.1) gem 在弹性转码器中设置作业。在我的登台和生产环境中,当我调用 create_job() 时,我不断收到“Timeout::Error: execution expired”错误。在开发中工作正常。每个环境都有自己的转码器管道、用于输入/输出的 s3 存储桶、sns 主题和具有自己策略的组。我通过delayed_job gem 调用transcoder.create_job()。

我到处寻找我能想到的在 AWS 和我的日志中查看的地方,但无法弄清楚是什么导致了这种情况。我什至不知道下一步该往哪里看。

触发超时的代码是 transcoder.create_job()。

def self.setup_aws_transcoder(id, s3_key)
  unless s3_key.blank?
    transcoder = AWS::ElasticTranscoder::Client.new(
      region: ENV['AET_REGION']
    )

    transcoder.create_job(
      pipeline_id: ENV['AET_PIPELINE_ID'],
      input: {
        key: "#{s3_key}",
        frame_rate: 'auto',
        resolution: 'auto',
        aspect_ratio: 'auto',
        interlaced: 'auto',
        container: 'auto'
      },
      output: {
        key: "#{s3_key}/#{id}.mp4",
        preset_id: '1351620000001-100070', # System preset: Web
        composition: [
          {
            time_span: {
              duration: '00:10:00.000'
            }
          }
        ]
      }
    )
  end
end

# Queue file processing
def queue_processing
  Video.delay.setup_aws_transcoder(id, s3_key)
end

也刚刚将它们更新为 aws-sdk gem 到 1.44 b/c wtf,但这并没有帮助。

我很茫然。我可以提供任何必要的代码或 AWS 设置来解决这个问题。

更新。我可以在我的开发环境中将所有值硬编码到暂存转码器/存储桶/用户等,它会创建适当的作业并对视频进行转码并将其放入正确的存储桶中。但是,当我将相同的硬编码代码部署到暂存并从那里运行它时,它再次超时。代码都是一样的,唯一不同的是application.yml文件和database.yml。我什至不应该引用 application.yml,因为我正在硬编码 access_key_id 和 secret_access_key 值。

4

1 回答 1

1

在 IRC 中一些人的帮助下,我们找到了问题所在。我的服务器运行的是 32 位版本的 Ubuntu。在 64 位上测试它是可行的,最后我报废了我的虚拟机并设置了一个新的。现在一切都很好。想如果有人遇到这个可能会有所帮助。

于 2014-10-03T14:55:54.260 回答