1
0
Fork 0

fix(api): split up worker name and job name to avoid logging false failures

This commit is contained in:
Sean Sube 2023-07-15 19:00:20 -05:00
parent 7f099c02e5
commit dfe9f6ee44
Signed by: ssube
GPG Key ID: 3EED7B957D362AF1
2 changed files with 40 additions and 30 deletions

View File

@ -53,7 +53,7 @@ class CorrectGFPGANStage(BaseStage):
def run( def run(
self, self,
job: WorkerContext, worker: WorkerContext,
server: ServerContext, server: ServerContext,
stage: StageParams, stage: StageParams,
_params: ImageParams, _params: ImageParams,
@ -70,7 +70,7 @@ class CorrectGFPGANStage(BaseStage):
return sources return sources
logger.info("correcting faces with GFPGAN model: %s", upscale.correction_model) logger.info("correcting faces with GFPGAN model: %s", upscale.correction_model)
device = job.get_device() device = worker.get_device()
gfpgan = self.load(server, stage, upscale, device) gfpgan = self.load(server, stage, upscale, device)
outputs = [] outputs = []

View File

@ -15,7 +15,8 @@ ProgressCallback = Callable[[int, int, Any], None]
class WorkerContext: class WorkerContext:
cancel: "Value[bool]" cancel: "Value[bool]"
job: str job: Optional[str]
name: str
pending: "Queue[JobCommand]" pending: "Queue[JobCommand]"
active_pid: "Value[int]" active_pid: "Value[int]"
progress: "Queue[ProgressCommand]" progress: "Queue[ProgressCommand]"
@ -26,7 +27,7 @@ class WorkerContext:
def __init__( def __init__(
self, self,
job: str, name: str,
device: DeviceParams, device: DeviceParams,
cancel: "Value[bool]", cancel: "Value[bool]",
logs: "Queue[str]", logs: "Queue[str]",
@ -35,7 +36,7 @@ class WorkerContext:
active_pid: "Value[int]", active_pid: "Value[int]",
idle: "Value[bool]", idle: "Value[bool]",
): ):
self.job = job self.name = name
self.device = device self.device = device
self.cancel = cancel self.cancel = cancel
self.progress = progress self.progress = progress
@ -96,56 +97,65 @@ class WorkerContext:
self.idle.value = idle self.idle.value = idle
def set_progress(self, progress: int) -> None: def set_progress(self, progress: int) -> None:
if self.job is None:
raise RuntimeError("no job on which to set progress")
if self.is_cancelled(): if self.is_cancelled():
raise RuntimeError("job has been cancelled") raise RuntimeError("job has been cancelled")
else:
logger.debug("setting progress for job %s to %s", self.job, progress)
self.last_progress = ProgressCommand(
self.job,
self.device.device,
False,
progress,
self.is_cancelled(),
False,
)
self.progress.put( logger.debug("setting progress for job %s to %s", self.job, progress)
self.last_progress,
block=False,
)
def finish(self) -> None:
logger.debug("setting finished for job %s", self.job)
self.last_progress = ProgressCommand( self.last_progress = ProgressCommand(
self.job, self.job,
self.device.device, self.device.device,
True, False,
self.get_progress(), progress,
self.is_cancelled(), self.is_cancelled(),
False, False,
) )
self.progress.put( self.progress.put(
self.last_progress, self.last_progress,
block=False, block=False,
) )
def fail(self) -> None: def finish(self) -> None:
logger.warning("setting failure for job %s", self.job) if self.job is None:
try: logger.warning("setting finished without an active job")
else:
logger.debug("setting finished for job %s", self.job)
self.last_progress = ProgressCommand( self.last_progress = ProgressCommand(
self.job, self.job,
self.device.device, self.device.device,
True, True,
self.get_progress(), self.get_progress(),
self.is_cancelled(), self.is_cancelled(),
True, False,
) )
self.progress.put( self.progress.put(
self.last_progress, self.last_progress,
block=False, block=False,
) )
except Exception:
logger.exception("error setting failure on job %s", self.job) def fail(self) -> None:
if self.job is None:
logger.warning("setting failure without an active job")
else:
logger.warning("setting failure for job %s", self.job)
try:
self.last_progress = ProgressCommand(
self.job,
self.device.device,
True,
self.get_progress(),
self.is_cancelled(),
True,
)
self.progress.put(
self.last_progress,
block=False,
)
except Exception:
logger.exception("error setting failure on job %s", self.job)
class JobStatus: class JobStatus: