From b9f8a77d9ba5222bbf55172092f0b235b92d1c85 Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Wed, 11 Dec 2024 04:51:05 +0200 Subject: [PATCH] DEV: Upload assets to S3 in parallel (#30210) In my local setup (with Minio), this uploads the assets to S3 ~40% faster. --- lib/tasks/s3.rake | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/tasks/s3.rake b/lib/tasks/s3.rake index 7f5a7a4cad2..39ec32b3364 100644 --- a/lib/tasks/s3.rake +++ b/lib/tasks/s3.rake @@ -194,7 +194,15 @@ task "s3:ensure_cors_rules" => :environment do end task "s3:upload_assets" => [:environment, "s3:ensure_cors_rules"] do - assets.each { |asset| upload(*asset) } + pool = + Concurrent::FixedThreadPool.new( + ENV["DISCOURSE_S3_UPLOAD_ASSETS_RAKE_THREAD_POOL_SIZE"] || Concurrent.processor_count, + ) + + assets.each { |asset| pool.post { upload(*asset) } } + + pool.shutdown + pool.wait_for_termination end task "s3:expire_missing_assets" => :environment do