Forwarding SSL data through multiple proxies

I am looking for some advice on how to handle the concurrency for forwarding the data through 500-1000 proxies. I have written the code that forwards the data through the proxies so the hard part is done. I would like the code the be pretty lightweight on the system resources but I cannot think of a way to get this done.

here is my code for the main function which contains the current way I am handling the concurrency for my program. Any suggestions will be appreciated as I am not by any means a professional with rust.

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {

    let proxies = read_proxies_from_file("../proxies.txt")?;
    
    let mut handles = Vec::new();

    for proxy in proxies {
        let proxy_clone = proxy.clone(); 


        let handle = tokio::spawn(async move {
            if let Err(e) = go(proxy_clone).await {
                eprintln!("error: {:?}", e.to_string());
                // eprintln!("Error in go function for proxy {}: {:?}", proxy_clone, e);
            }
        });

        handles.push(handle);
    }

    for handle in handles {
        handle.await.unwrap();
    }

    Ok(())
}

The biggest change I'd make is to use either a JoinSet or a TaskTracker to keep track of your in-progress tasks, rather than a Vec of handles. Both of these are optimized for handling very large numbers of tasks efficiently.

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.