runs jobs to exhaustion

This commit is contained in:
Brandon Thomas committed 2021-05-22 03:57:07 -04:00
1 parent b93f8a8099
commit 232f66eb69
2 files changed
+40 -5

No files matched your search

+25 -1
View File
@@ -81,4 +81,28 @@ WHERE id = ?
.await?;
Ok(())
}
}
pub async fn mark_tts_upload_job_done(pool: &MySqlPool,
job: &TtsUploadJobRecord,
success: bool)
-> AnyhowResult<()>
{
let status = if success { "complete_success" } else { "complete_failure" };
let query_result = sqlx::query!(
r#"
UPDATE tts_model_upload_jobs
SET
status = ?,
failure_reason = NULL,
retry_at = NULL
WHERE id = ?
"#,
status,
job.id,
)
.execute(pool)
.await?;
Ok(())
}
+15 -4
View File
@@ -1,3 +1,4 @@
#![deny(unused_must_use)]
#![allow(dead_code)]
#![allow(unused_mut)]
#![allow(unused_imports)]
@@ -9,8 +10,9 @@ pub mod util;
use chrono::Utc;
use crate::job::job_queries::TtsUploadJobRecord;
use crate::job::job_queries::query_tts_upload_job_records;
use crate::job::job_queries::mark_tts_upload_job_done;
use crate::job::job_queries::mark_tts_upload_job_failure;
use crate::job::job_queries::query_tts_upload_job_records;
use crate::util::anyhow_result::AnyhowResult;
use log::{warn, info};
use sqlx::MySqlPool;
@@ -44,7 +46,7 @@ async fn main() -> AnyhowResult<()> {
.connect(&db_connection_string)
.await?;
main_loop(pool);
main_loop(pool).await;
Ok(())
}
@@ -69,6 +71,12 @@ async fn main_loop(pool: MySqlPool) {
}
};
if jobs.is_empty() {
info!("No jobs!");
std::thread::sleep(Duration::from_millis(1500));
continue;
}
let result = process_jobs(&pool, jobs).await;
match result {
@@ -89,7 +97,7 @@ async fn main_loop(pool: MySqlPool) {
async fn process_jobs(pool: &MySqlPool, jobs: Vec<TtsUploadJobRecord>) -> AnyhowResult<()> {
for job in jobs.into_iter() {
let result = process_job(&job).await;
let result = process_job(pool, &job).await;
match result {
Ok(_) => {},
Err(e) => {
@@ -103,13 +111,16 @@ async fn process_jobs(pool: &MySqlPool, jobs: Vec<TtsUploadJobRecord>) -> Anyhow
Ok(())
}
async fn process_job(job: &TtsUploadJobRecord) -> AnyhowResult<()> {
async fn process_job(pool: &MySqlPool, job: &TtsUploadJobRecord) -> AnyhowResult<()> {
// TODO: 1. Mark processing.
// TODO: 2. Download.
// TODO: 3. Upload.
// TODO: 4. Save record.
// TODO: 5. Mark job done.
info!("Job done: {}", job.id);
mark_tts_upload_job_done(pool, job, true).await?;
Ok(())
}