Skip to main content

scouter_settings/
polling.rs

1use chrono::Duration;
2use serde::Deserialize;
3use serde::Serialize;
4
5#[derive(Debug, Clone, Serialize)]
6pub struct PollingSettings {
7    pub num_workers: usize,
8    pub max_retries: usize,
9}
10
11impl Default for PollingSettings {
12    fn default() -> Self {
13        let num_workers = std::env::var("POLLING_WORKER_COUNT")
14            .unwrap_or_else(|_| "4".to_string())
15            .parse::<usize>()
16            .unwrap();
17
18        let max_retries = std::env::var("MAX_RETRIES")
19            .unwrap_or_else(|_| "3".to_string())
20            .parse::<usize>()
21            .unwrap();
22
23        Self {
24            num_workers,
25            max_retries,
26        }
27    }
28}
29
30#[derive(Debug, Clone, Serialize, Deserialize)]
31pub struct GenAIPollerSettings {
32    pub max_retries: i32,
33    pub genai_workers: usize,
34    pub trace_wait_timeout: Duration,
35    pub trace_backoff: Duration,
36    pub trace_reschedule_delay: Duration,
37}
38
39impl Default for GenAIPollerSettings {
40    fn default() -> Self {
41        let genai_workers = std::env::var("GENAI_WORKER_COUNT")
42            .unwrap_or_else(|_| "2".to_string())
43            .parse::<usize>()
44            .unwrap();
45
46        let max_retries = std::env::var("GENAI_MAX_RETRIES")
47            .unwrap_or_else(|_| "3".to_string())
48            .parse::<i32>()
49            .unwrap();
50
51        let trace_wait_timeout = Duration::seconds(
52            std::env::var("GENAI_TRACE_WAIT_TIMEOUT_SECS")
53                .unwrap_or_else(|_| "10".to_string())
54                .parse::<i64>()
55                .unwrap(),
56        );
57
58        let trace_backoff = Duration::milliseconds(
59            std::env::var("GENAI_TRACE_BACKOFF_MILLIS")
60                .unwrap_or_else(|_| "100".to_string())
61                .parse::<i64>()
62                .unwrap(),
63        );
64
65        let trace_reschedule_delay = Duration::seconds(
66            std::env::var("GENAI_TRACE_RESCHEDULE_DELAY_SECS")
67                .unwrap_or_else(|_| "30".to_string())
68                .parse::<i64>()
69                .unwrap(),
70        );
71
72        Self {
73            max_retries,
74            trace_wait_timeout,
75            trace_backoff,
76            trace_reschedule_delay,
77            genai_workers,
78        }
79    }
80}