diff options
Diffstat (limited to 'import/src/musicbrainz.rs')
-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 = [ |