mirror of
https://github.com/Magnus167/msyrs.git
synced 2025-08-20 18:40:00 +00:00
working
This commit is contained in:
parent
fe1c348dc7
commit
c3a49abdf7
@ -211,8 +211,21 @@ impl DQRequester {
|
|||||||
Ok(response)
|
Ok(response)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_timeseries(
|
||||||
|
&mut self,
|
||||||
|
args: DQTimeseriesRequestArgs,
|
||||||
|
) -> Result<Vec<DQTimeSeriesResponse>, Box<dyn Error>> {
|
||||||
|
let max_retries = 5;
|
||||||
|
println!(
|
||||||
|
"Invoking recursive function for {:?} expressions",
|
||||||
|
args.expressions.len()
|
||||||
|
);
|
||||||
|
_fetch_timeseries_recursive(self, args, max_retries)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn _fetch_expression_batch(
|
fn _fetch_expression_batch(
|
||||||
client: Arc<Mutex<Self>>,
|
client: Arc<Mutex<DQRequester>>,
|
||||||
expr_batch: Vec<String>,
|
expr_batch: Vec<String>,
|
||||||
okay_responses: Arc<Mutex<Vec<DQTimeSeriesResponse>>>,
|
okay_responses: Arc<Mutex<Vec<DQTimeSeriesResponse>>>,
|
||||||
failed_batches: Arc<Mutex<Vec<Vec<String>>>>,
|
failed_batches: Arc<Mutex<Vec<Vec<String>>>>,
|
||||||
@ -244,7 +257,7 @@ impl DQRequester {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn _fetch_timeseries_recursive(
|
fn _fetch_timeseries_recursive(
|
||||||
&mut self,
|
dq_requester: &mut DQRequester,
|
||||||
args: DQTimeseriesRequestArgs,
|
args: DQTimeseriesRequestArgs,
|
||||||
max_retries: u32,
|
max_retries: u32,
|
||||||
) -> Result<Vec<DQTimeSeriesResponse>, Box<dyn Error>> {
|
) -> Result<Vec<DQTimeSeriesResponse>, Box<dyn Error>> {
|
||||||
@ -261,7 +274,7 @@ impl DQRequester {
|
|||||||
|
|
||||||
let okay_responses = Arc::new(Mutex::new(Vec::new()));
|
let okay_responses = Arc::new(Mutex::new(Vec::new()));
|
||||||
let failed_batches = Arc::new(Mutex::new(Vec::new()));
|
let failed_batches = Arc::new(Mutex::new(Vec::new()));
|
||||||
let client = Arc::new(Mutex::new(self.clone()));
|
let client = Arc::new(Mutex::new(dq_requester.clone()));
|
||||||
|
|
||||||
let (sender, receiver) = channel::unbounded();
|
let (sender, receiver) = channel::unbounded();
|
||||||
let total_batches = expression_batches.len();
|
let total_batches = expression_batches.len();
|
||||||
@ -277,7 +290,7 @@ impl DQRequester {
|
|||||||
|
|
||||||
let worker = thread::spawn(move || {
|
let worker = thread::spawn(move || {
|
||||||
while let Ok((args, expr_batch)) = receiver.recv() {
|
while let Ok((args, expr_batch)) = receiver.recv() {
|
||||||
DQRequester::_fetch_expression_batch(
|
_fetch_expression_batch(
|
||||||
client.clone(),
|
client.clone(),
|
||||||
expr_batch,
|
expr_batch,
|
||||||
okay_responses.clone(),
|
okay_responses.clone(),
|
||||||
@ -327,7 +340,7 @@ impl DQRequester {
|
|||||||
new_args.update_expressions(failed_batches.concat());
|
new_args.update_expressions(failed_batches.concat());
|
||||||
log::info!("Retrying with {} failed expressions", failed_batches.len());
|
log::info!("Retrying with {} failed expressions", failed_batches.len());
|
||||||
let mut retry_responses =
|
let mut retry_responses =
|
||||||
self._fetch_timeseries_recursive(new_args, max_retries - 1)?;
|
_fetch_timeseries_recursive(dq_requester, new_args, max_retries - 1)?;
|
||||||
okay_responses.append(&mut retry_responses);
|
okay_responses.append(&mut retry_responses);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -335,19 +348,6 @@ impl DQRequester {
|
|||||||
Ok(okay_responses)
|
Ok(okay_responses)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_timeseries(
|
|
||||||
&mut self,
|
|
||||||
args: DQTimeseriesRequestArgs,
|
|
||||||
) -> Result<Vec<DQTimeSeriesResponse>, Box<dyn Error>> {
|
|
||||||
let max_retries = 5;
|
|
||||||
println!(
|
|
||||||
"Invoking recursive function for {:?} expressions",
|
|
||||||
args.expressions.len()
|
|
||||||
);
|
|
||||||
self._fetch_timeseries_recursive(args, max_retries)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
fn main() {
|
fn main() {
|
||||||
let client_id = std::env::var("DQ_CLIENT_ID").unwrap();
|
let client_id = std::env::var("DQ_CLIENT_ID").unwrap();
|
||||||
|
11
src/main.rs
11
src/main.rs
@ -16,13 +16,13 @@ fn main() {
|
|||||||
start.elapsed()
|
start.elapsed()
|
||||||
);
|
);
|
||||||
|
|
||||||
let num_ticks = 1000;
|
let num_ticks = 50;
|
||||||
let sel_tickers: Vec<String> = tickers
|
let sel_tickers: Vec<String> = tickers
|
||||||
.iter()
|
.iter()
|
||||||
.take(num_ticks)
|
.take(num_ticks)
|
||||||
.map(|s| s.to_string())
|
.map(|s| s.to_string())
|
||||||
.collect();
|
.collect();
|
||||||
let mut df_deets = Vec::new();
|
// let mut df_deets = Vec::new();
|
||||||
|
|
||||||
println!("Retrieving indicators for {} tickers", sel_tickers.len());
|
println!("Retrieving indicators for {} tickers", sel_tickers.len());
|
||||||
start = std::time::Instant::now();
|
start = std::time::Instant::now();
|
||||||
@ -41,7 +41,12 @@ fn main() {
|
|||||||
|
|
||||||
start = std::time::Instant::now();
|
start = std::time::Instant::now();
|
||||||
for indicator in indicators {
|
for indicator in indicators {
|
||||||
df_deets.push((indicator.ticker.clone(), indicator.as_qdf().unwrap().size()));
|
// df_deets.push((indicator.ticker.clone(), indicator.as_qdf().unwrap().size()));
|
||||||
|
println!(
|
||||||
|
"Ticker: {}, DataFrame: {}",
|
||||||
|
indicator.ticker,
|
||||||
|
indicator.as_qdf().unwrap()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
println!(
|
println!(
|
||||||
"Converted indicators to DataFrames in {:?}",
|
"Converted indicators to DataFrames in {:?}",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user