ruby-on-rails - 如何使用后台 worker 保存记录?

标签 ruby-on-rails backgroundworker redis resque

如果我将一个大于 5mb 的视频文件保存到服务器上。我应该创建一个后台作业来保存这个文件吗?

这应该怎么做?我的视频模型有标题、描述和附件列/字段。所有字段都是必需的。

在 def create 中,我应该做类似"if Resque.enqueue(Save, @video)" 的操作,而不是执行"if @video.save"

我不确定如何做到这一点,因为将参数传递给 Resque.enqueue() 会将其转换为散列。其次,对于“”if Resque.enqueue(Save, @video)“”,需要一个 true 或 false。然而,Resque.enqueue 不能返回任何东西。还是我错了?

按钮线是。使用带有 resque + redis 的后台 worker 保存记录的合适方法是什么?

理想情况下,我认为它应该类似于:

def create
  @video = Video.new(params[:video])

  respond_to do |format|
    if Resque.enqueue(Save)
      ...
    end
end

module Save
  @queue = :save

  def self.perform
    video = Video.new(params[:video])
    video.save
    return true
  end
end

你有什么想法?

最佳答案

再次意识到情况。我不认为上传者意味着延迟工作……想想看。如果上传文件排在第 10 个位置会发生什么。它期望从哪里获取文件?

正如另一位开发者所说:“有 HTTP 请求处理程序和后台进程。您需要在 http 请求处理程序中处理原始上传,然后您可以启动外部后台进程将其从本地上传到 S3磁盘”。

这意味着,最初运行一些 HTTP 请求处理程序来处理这些类型的请求是正常的。

希望这能为最终遇到同样问题的用户解决一些问题。

关于ruby-on-rails - 如何使用后台 worker 保存记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4990708/

相关文章:

ruby-on-rails - 自定义 rake :stats

postgresql - 如何为 PostgreSQL 11 服务器设置后台 worker ?

C# backgroundworker RunworkerCompleted 与异步等待

java - redisTemplate 上的 Spring Redis 空指针异常

redis - redis安装报错解决办法

ruby-on-rails - 使用rails命令 "rake db:create:all"时出错 - 我认为它与Ruby的版本冲突有关

ruby-on-rails - 如何使用 arel 调用 postgres 函数?

ruby-on-rails - 检索密码哈希时出现编码错误

c# - 需要 BackgroundWorker 帮助

redis - 如何在 RDB 文件上运行 redis keys 命令?