gpt4 book ai didi

ruby-on-rails - 如何使用 Sidekiq 将文件上传推送到后台?

转载 作者:行者123 更新时间:2023-12-01 02:27:48 25 4
gpt4 key购买 nike

我正在开发一个允许您上传大型音乐文件的 Rails 应用程序。我想在后台上传这些,这样当您开始上传时,它会在用户输入有关文件的元数据(例如轨道名称和艺术家等)时移动到 sidekiq 工作人员。

我能够按照这个 railscast 将图像处理移到后台:
http://railscasts.com/episodes/383-uploading-to-amazon-s3?view=asciicast

但我不太清楚如何将文件的实际上传移动到后台。我应该使用某种回调或 Sidekiq 方法吗?

有没有关于如何做这样的事情的资源?

这是我的歌曲模型:
https://gist.github.com/leemcalilly/5001583

我的歌曲 Controller :
https://gist.github.com/leemcalilly/5001590

我的上传表格:
https://gist.github.com/leemcalilly/5001586

我的上传者(使用carrierwave和carrierwave_direct到s3):
https://gist.github.com/leemcalilly/5001601

该代码可以上传到 s3,但在文件上传时,浏览器会绑定(bind)在 Rails 进程中。我更愿意将其移至后台进程。我认为那里的sidekiq 代码确实来自处理图像处理的Railscast,但我不太明白为什么图像处理在该Railscast 中工作。

非常感谢任何指向正确方向的帮助。

最佳答案

您的 TrackUploader 类基本上需要一个带有参数的“执行”方法。在该方法中,输入上传图像的逻辑。

您还需要指定队列的名称(即 track_uploader)

之后,您可以通过 TrackUploader.perform_async(argument) 将项目添加到此工作队列。

您可以手动启动 sidekiq,或使用上帝,以确保它保持活力。

class TrackUploader < CarrierWave::Uploader::Base

include Sidekiq::Worker
sidekiq_options :queue => :track_uploader

include Sprockets::Helpers::RailsHelper
include Sprockets::Helpers::IsolatedHelper

include CarrierWaveDirect::Uploader

# Recommended for use with fog
include CarrierWave::MimeTypes
process :set_content_type

def extension_white_list
%w(mp3 m4a wav aiff flac)
end

def perform(argument)
#do the actual uploading here
end

end

关于ruby-on-rails - 如何使用 Sidekiq 将文件上传推送到后台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14993790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com