From eeddeb37e6006a9c0af2cbd63efcd76aa3854191 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Tue, 24 Mar 2026 17:18:08 -0400 Subject: [PATCH] batching --- crates/lib/easyenv/src/lib.rs | 1 + crates/lib/easyenv/src/types/num.rs | 23 +++++++++++++++++++ .../service/job/seedance2_pro_job/src/main.rs | 8 ++++++- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/crates/lib/easyenv/src/lib.rs b/crates/lib/easyenv/src/lib.rs index 10e9c8549b..e6f9b1548a 100644 --- a/crates/lib/easyenv/src/lib.rs +++ b/crates/lib/easyenv/src/lib.rs @@ -46,6 +46,7 @@ pub use types::duration::get_env_duration_seconds_optional; pub use types::duration::get_env_duration_seconds_or_default; pub use types::duration::get_env_duration_seconds_required; pub use types::num::get_env_num; +pub use types::num::try_get_env_num_optional; pub use types::pathbuf::get_env_pathbuf_optional; pub use types::pathbuf::get_env_pathbuf_or_default; pub use types::pathbuf::get_env_pathbuf_required; diff --git a/crates/lib/easyenv/src/types/num.rs b/crates/lib/easyenv/src/types/num.rs index d47b63bfce..36fa8f2ab6 100644 --- a/crates/lib/easyenv/src/types/num.rs +++ b/crates/lib/easyenv/src/types/num.rs @@ -26,3 +26,26 @@ pub fn get_env_num(env_name: &str, default: T) -> Result }, } } + +/// Get an environment variable as an optional number. +/// Returns `Ok(None)` if the env var is not set. +/// Returns `Err` if the env var is set but can't be parsed. +pub fn try_get_env_num_optional(env_name: &str) -> Result, EnvError> + where T: FromStr, + T::Err: Debug +{ + match env::var(env_name).as_ref().ok() { + None => { + warn!("Env var '{}' not supplied.", env_name); + Ok(None) + }, + Some(val) => { + val.parse::() + .map(Some) + .map_err(|e| { + error!("Can't parse env var '{}' value '{:?}'. Error: {:?}", env_name, val, e); + EnvError::ParseError { reason: format!("Can't parse value: {:?}", e) } + }) + }, + } +} diff --git a/crates/service/job/seedance2_pro_job/src/main.rs b/crates/service/job/seedance2_pro_job/src/main.rs index a7cd25c6d1..2dc2362486 100644 --- a/crates/service/job/seedance2_pro_job/src/main.rs +++ b/crates/service/job/seedance2_pro_job/src/main.rs @@ -107,6 +107,12 @@ async fn main() -> AnyhowResult<()> { 5_000, )?; + let maybe_pages_per_batch: Option = easyenv::try_get_env_num_optional("BATCH_PAGE_COUNT")?; + + if let Some(count) = maybe_pages_per_batch { + info!("Batch page count: {}", count); + } + let application_shutdown = RelaxedAtomicBool::new(false); let job_stats = JobStats::new(); @@ -122,7 +128,7 @@ async fn main() -> AnyhowResult<()> { server_environment, job_stats, poll_interval_millis, - maybe_pages_per_batch: None, // TODO: Make configurable via env var if needed. + maybe_pages_per_batch, application_shutdown: application_shutdown.clone(), };