如何正确使用后台作业文件上传rails app heroku

时间:2012-10-24 18:03:49

标签: ruby-on-rails-3 heroku delayed-job background-process sidekiq

我正在开发一个rails应用程序,它从用户那里获取上传的文件并将它们推送到框中。问题是,这会因为api调用时间过长而超时。我想将此过程移动到工作进程,但不确定如何在用户上载文件和工作人员将作业从队列中取出的时间之间保留文件。我见过的所有例子似乎都跳过这部分,或者不处理使用不是s3的api。我考虑过将文件存储在数据库中,但是框api需要一个文件对象(curl -F @file),而不仅仅是文件的内容。关于如何实现这一点的任何指示?我希望使用sidekiq出于性能原因,但delayed_job也没关系

2 个答案:

答案 0 :(得分:2)

我们的项目中只有几个月的类似问题。 请查看以下链接以供参考

http://mattgrande.wordpress.com/2009/08/11/delayedjob/

Paperclip, Delayed Job, S3, Heroku - design for delayed processing of sensitive uploaded files: db or s3?

还有一个宝石用于具有延迟作业的回形针

https://github.com/jrgifford/delayed_paperclip/

答案 1 :(得分:1)

如果您不想依赖S3存储临时文件,则应该查看paperclip_database gem。

我们使用它来存储我们数据库中的临时文件,以便由delayed_job处理。

只需将附有临时文件的课程传递给您的延迟作业即可。与回形针本身一样,只要从数据库中删除作业,文件就会被删除。