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();
join_set.spawn(async move {
let _guard = liveness_tx;
let mut inner_set = JoinSet::new();
loop {
if cancel_token.is_cancelled() {
return;
}
let client = sender.recv();
if client.is_none() {
continue;
@ -152,25 +156,37 @@ async fn main() -> anyhow::Result<()> {
if cancel_token.is_cancelled() {
return;
}
loop {
if client.get_client().await.is_err() {
break;
}
if cancel_token.is_cancelled() {
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;
let semaphore = semaphore.clone();
let cancel_token = cancel_token.clone();
let profile = profile.clone();
inner_set.spawn(async move {
loop {
if client.get_client().await.is_err() {
return;
}
Err(error) => {
error!("{}", error);
if cancel_token.is_cancelled() {
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() {
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;
{
let permit = semaphore.clone().acquire_owned().await.unwrap();
if cancel_token.is_cancelled() {
return;
}
Err(error) => {
error!("{}", error);
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
}
}
if cancel_token.is_cancelled() {