aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-04-27 15:46:28 +0200
committermetamuffin <metamuffin@disroot.org>2025-04-27 15:46:28 +0200
commitb0b35e87154ae5d5c1e78ece5090d29dbabfff1a (patch)
treefa8a77c3935a36f43369480d098fc70b63db55e8
parent509bd472501054cacd6f21723eb757185b61b0f4 (diff)
downloadjellything-b0b35e87154ae5d5c1e78ece5090d29dbabfff1a.tar
jellything-b0b35e87154ae5d5c1e78ece5090d29dbabfff1a.tar.bz2
jellything-b0b35e87154ae5d5c1e78ece5090d29dbabfff1a.tar.zst
lower musicbrain par requests
-rw-r--r--import/src/musicbrainz.rs9
1 files changed, 5 insertions, 4 deletions
diff --git a/import/src/musicbrainz.rs b/import/src/musicbrainz.rs
index 5678024..4425956 100644
--- a/import/src/musicbrainz.rs
+++ b/import/src/musicbrainz.rs
@@ -193,6 +193,7 @@ pub struct MbUrl {
}
impl MusicBrainz {
+ const MAX_PAR_REQ: usize = 4;
pub fn new() -> Self {
let client = ClientBuilder::new()
.default_headers(HeaderMap::from_iter([
@@ -210,15 +211,15 @@ impl MusicBrainz {
Self {
client,
// send at most 1 req/s according to musicbrainz docs, each lock is held for 10s
- // this implementation also never sends more than 10 requests in-flight.
- rate_limit: Arc::new(Semaphore::new(10)),
+ // this implementation also never sends more than MAX_PAR_REQ requests in-flight.
+ rate_limit: Arc::new(Semaphore::new(Self::MAX_PAR_REQ)),
}
}
pub async fn lookup_recording(&self, id: String) -> Result<Arc<MbRecordingRel>> {
async_cache_memory("api-musicbrainz-recording", id.clone(), || async move {
let _permit = self.rate_limit.clone().acquire_owned().await?;
- let permit_drop_ts = Instant::now() + Duration::from_secs(10);
+ let permit_drop_ts = Instant::now() + Duration::from_secs(Self::MAX_PAR_REQ as u64);
info!("recording lookup: {id}");
let inc = [
@@ -265,7 +266,7 @@ impl MusicBrainz {
pub async fn lookup_artist(&self, id: String) -> Result<Arc<MbArtistRel>> {
async_cache_memory("api-musicbrainz-artist", id.clone(), || async move {
let _permit = self.rate_limit.clone().acquire_owned().await?;
- let permit_drop_ts = Instant::now() + Duration::from_secs(10);
+ let permit_drop_ts = Instant::now() + Duration::from_secs(Self::MAX_PAR_REQ as u64);
info!("artist lookup: {id}");
let inc = [