Move downloads to queue for better performance (#367)

This commit is contained in:
Geometrically
2022-06-09 12:21:51 -07:00
committed by GitHub
parent 5c4a864680
commit 75614fb13c
12 changed files with 785 additions and 700 deletions

View File

@@ -1,4 +1,5 @@
use crate::file_hosting::S3Host;
use crate::queue::download::DownloadQueue;
use crate::ratelimit::errors::ARError;
use crate::ratelimit::memory::{MemoryStore, MemoryStoreActor};
use crate::ratelimit::middleware::RateLimiter;
@@ -16,6 +17,7 @@ mod database;
mod file_hosting;
mod health;
mod models;
mod queue;
mod ratelimit;
mod routes;
mod scheduler;
@@ -183,11 +185,27 @@ async fn main() -> std::io::Result<()> {
scheduler::schedule_versions(&mut scheduler, pool.clone(), skip_initial);
let download_queue = Arc::new(DownloadQueue::new());
let pool_ref = pool.clone();
let download_queue_ref = download_queue.clone();
scheduler.run(std::time::Duration::from_secs(30), move || {
let pool_ref = pool_ref.clone();
let download_queue_ref = download_queue_ref.clone();
async move {
info!("Indexing download queue");
let result = download_queue_ref.index(&pool_ref).await;
if let Err(e) = result {
warn!("Indexing download queue failed: {:?}", e);
}
info!("Done indexing download queue");
}
});
let ip_salt = Pepper {
pepper: crate::models::ids::Base62Id(
crate::models::ids::random_base62(11),
)
.to_string(),
pepper: models::ids::Base62Id(models::ids::random_base62(11))
.to_string(),
};
let store = MemoryStore::new();
@@ -243,6 +261,7 @@ async fn main() -> std::io::Result<()> {
.app_data(web::Data::new(pool.clone()))
.app_data(web::Data::new(file_host.clone()))
.app_data(web::Data::new(search_config.clone()))
.app_data(web::Data::new(download_queue.clone()))
.app_data(web::Data::new(ip_salt.clone()))
.configure(routes::v1_config)
.configure(routes::v2_config)