1
0
mirror of https://github.com/Bluemangoo/sekai-unpacker.git synced 2026-05-06 20:44:47 +08:00

fix multiple server

This commit is contained in:
Bluemangoo 2026-04-11 12:21:51 +08:00
parent 3d5ca3b1f8
commit c07e5b835e
Signed by: Bluemangoo
GPG Key ID: F2F7E46880A1C4CF

View File

@ -143,7 +143,11 @@ async fn main() -> anyhow::Result<()> {
let liveness_tx = liveness_tx.clone(); let liveness_tx = liveness_tx.clone();
join_set.spawn(async move { join_set.spawn(async move {
let _guard = liveness_tx; let _guard = liveness_tx;
let mut inner_set = JoinSet::new();
loop { loop {
if cancel_token.is_cancelled() {
return;
}
let client = sender.recv(); let client = sender.recv();
if client.is_none() { if client.is_none() {
continue; continue;
@ -152,25 +156,37 @@ async fn main() -> anyhow::Result<()> {
if cancel_token.is_cancelled() { if cancel_token.is_cancelled() {
return; return;
} }
loop { let semaphore = semaphore.clone();
if client.get_client().await.is_err() { let cancel_token = cancel_token.clone();
break; let profile = profile.clone();
} inner_set.spawn(async move {
if cancel_token.is_cancelled() { loop {
return; if client.get_client().await.is_err() {
} return;
let permit = semaphore.clone().acquire_owned().await.unwrap();
let result = run(client.clone(), profile.clone()).await;
match result {
Ok(true) => {
post_task(profile.clone(), permit, cancel_token.clone()).await;
} }
Err(error) => { if cancel_token.is_cancelled() {
error!("{}", error); return;
} }
_ => {} {
let permit = semaphore.clone().acquire_owned().await.unwrap();
if cancel_token.is_cancelled() {
return;
}
let result = run(client.clone(), profile.clone()).await;
match result {
Ok(true) => {
post_task(profile.clone(), permit, cancel_token.clone())
.await;
}
Err(error) => {
error!("{}", error);
}
_ => {}
}
}
sleep(Duration::from_millis(100)).await; // let other client get semaphore
} }
} });
} }
}); });
} }
@ -202,17 +218,24 @@ async fn main() -> anyhow::Result<()> {
if cancel_token.is_cancelled() { if cancel_token.is_cancelled() {
return; return;
} }
let permit = semaphore.clone().acquire_owned().await.unwrap(); {
let result = run(client.clone(), profile.clone()).await; let permit = semaphore.clone().acquire_owned().await.unwrap();
match result { if cancel_token.is_cancelled() {
Ok(true) => { return;
post_task(profile.clone(), permit, cancel_token.clone()).await;
} }
Err(error) => { let result = run(client.clone(), profile.clone()).await;
error!("{}", error); match result {
Ok(true) => {
post_task(profile.clone(), permit, cancel_token.clone())
.await;
}
Err(error) => {
error!("{}", error);
}
_ => {}
} }
_ => {}
} }
sleep(Duration::from_millis(100)).await; // let other client get semaphore
} }
} }
if cancel_token.is_cancelled() { if cancel_token.is_cancelled() {