Rails 用 resque 实现后台上传任务时 出现编码错误的问题?

zhulinpinyu · 2014年05月19日 · 最后由 zhulinpinyu 回复于 2014年05月20日 · 2711 次阅读

Hi 大家好,

我用 rails 做一个文件上传的功能,想使用 resque 使其在后台执行,但遇到如下错误

def import
    if request.post? && params[:file]
      Resque.enqueue(Job, params[:file])
      redirect_to search_url, notice: "File imported"
    end
  end

Encoding::UndefinedConversionError: "\xE2" from ASCII-8BIT to UTF-8

还请各位不吝赐教。

应不是 resque 的问题,而是 Job 里用 encode 的问题,与你同样的问题在此可看到: http://stackoverflow.com/questions/13003287/encodingundefinedconversionerror 或者把你 Job 的码做成單独的文档从命令行测试,类似像 ruby job.rb filename,就可知道是 Job 的问题或 resque 的问题。

params[:file] 是一个 FileUploader 对象,直接塞入 resque 可能会有不可预料的状况,参数应该用数字、字符串等简单对象。

#3 楼 @Rei thanks, 我改用 sidekiq

Job.perform_async(path,filename)

it is work fine.

需要 登录 后方可回复, 如果你还没有账号请 注册新账号