diff options
author | metamuffin <metamuffin@disroot.org> | 2025-04-27 15:46:28 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-04-27 15:46:28 +0200 |
commit | b0b35e87154ae5d5c1e78ece5090d29dbabfff1a (patch) | |
tree | fa8a77c3935a36f43369480d098fc70b63db55e8 /import | |
parent | 509bd472501054cacd6f21723eb757185b61b0f4 (diff) | |
download | jellything-b0b35e87154ae5d5c1e78ece5090d29dbabfff1a.tar jellything-b0b35e87154ae5d5c1e78ece5090d29dbabfff1a.tar.bz2 jellything-b0b35e87154ae5d5c1e78ece5090d29dbabfff1a.tar.zst |
lower musicbrain par requests
Diffstat (limited to 'import')
-rw-r--r-- | import/src/musicbrainz.rs | 9 |
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 = [ |