apply lint, make missing images an error
This commit is contained in:
parent
7cf5554bef
commit
d1565b056e
|
@ -50,7 +50,9 @@ from .utils import wrap_route
|
||||||
logger = getLogger(__name__)
|
logger = getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def ready_reply(ready: bool, progress: int = 0, error: bool = False, cancel: bool = False):
|
def ready_reply(
|
||||||
|
ready: bool, progress: int = 0, error: bool = False, cancel: bool = False
|
||||||
|
):
|
||||||
return jsonify(
|
return jsonify(
|
||||||
{
|
{
|
||||||
"cancel": cancel,
|
"cancel": cancel,
|
||||||
|
@ -439,7 +441,7 @@ def cancel(context: ServerContext, pool: DevicePoolExecutor):
|
||||||
output_file = sanitize_name(output_file)
|
output_file = sanitize_name(output_file)
|
||||||
cancel = pool.cancel(output_file)
|
cancel = pool.cancel(output_file)
|
||||||
|
|
||||||
return ready_reply(cancel == False, cancel=cancel)
|
return ready_reply(cancel is not False, cancel=cancel)
|
||||||
|
|
||||||
|
|
||||||
def ready(context: ServerContext, pool: DevicePoolExecutor):
|
def ready(context: ServerContext, pool: DevicePoolExecutor):
|
||||||
|
@ -454,8 +456,15 @@ def ready(context: ServerContext, pool: DevicePoolExecutor):
|
||||||
output = base_join(context.output_path, output_file)
|
output = base_join(context.output_path, output_file)
|
||||||
if path.exists(output):
|
if path.exists(output):
|
||||||
return ready_reply(True)
|
return ready_reply(True)
|
||||||
|
else:
|
||||||
|
return ready_reply(True, error=True) # is a missing image really an error? yes will display the retry button
|
||||||
|
|
||||||
return ready_reply(progress.finished, progress=progress.progress, error=progress.error, cancel=progress.cancel)
|
return ready_reply(
|
||||||
|
progress.finished,
|
||||||
|
progress=progress.progress,
|
||||||
|
error=progress.error,
|
||||||
|
cancel=progress.cancel,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def status(context: ServerContext, pool: DevicePoolExecutor):
|
def status(context: ServerContext, pool: DevicePoolExecutor):
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
from typing import Callable, Any
|
from typing import Any, Callable
|
||||||
|
|
||||||
class ProgressCommand():
|
|
||||||
|
class ProgressCommand:
|
||||||
device: str
|
device: str
|
||||||
job: str
|
job: str
|
||||||
finished: bool
|
finished: bool
|
||||||
|
@ -24,7 +25,8 @@ class ProgressCommand():
|
||||||
self.cancel = cancel
|
self.cancel = cancel
|
||||||
self.error = error
|
self.error = error
|
||||||
|
|
||||||
class JobCommand():
|
|
||||||
|
class JobCommand:
|
||||||
name: str
|
name: str
|
||||||
fn: Callable[..., None]
|
fn: Callable[..., None]
|
||||||
args: Any
|
args: Any
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
from logging import getLogger
|
from logging import getLogger
|
||||||
from os import getpid
|
from os import getpid
|
||||||
from typing import Any, Callable, Tuple
|
from typing import Any, Callable
|
||||||
|
|
||||||
from torch.multiprocessing import Queue, Value
|
from torch.multiprocessing import Queue, Value
|
||||||
|
|
||||||
from .command import JobCommand, ProgressCommand
|
|
||||||
from ..params import DeviceParams
|
from ..params import DeviceParams
|
||||||
|
from .command import JobCommand, ProgressCommand
|
||||||
|
|
||||||
logger = getLogger(__name__)
|
logger = getLogger(__name__)
|
||||||
|
|
||||||
|
@ -73,17 +73,47 @@ class WorkerContext:
|
||||||
raise RuntimeError("job has been cancelled")
|
raise RuntimeError("job has been cancelled")
|
||||||
else:
|
else:
|
||||||
logger.debug("setting progress for job %s to %s", self.job, progress)
|
logger.debug("setting progress for job %s to %s", self.job, progress)
|
||||||
self.progress.put(ProgressCommand(self.job, self.device.device, False, progress, self.is_cancelled(), False), block=False)
|
self.progress.put(
|
||||||
|
ProgressCommand(
|
||||||
|
self.job,
|
||||||
|
self.device.device,
|
||||||
|
False,
|
||||||
|
progress,
|
||||||
|
self.is_cancelled(),
|
||||||
|
False,
|
||||||
|
),
|
||||||
|
block=False,
|
||||||
|
)
|
||||||
|
|
||||||
def set_finished(self) -> None:
|
def set_finished(self) -> None:
|
||||||
logger.debug("setting finished for job %s", self.job)
|
logger.debug("setting finished for job %s", self.job)
|
||||||
self.progress.put(ProgressCommand(self.job, self.device.device, True, self.get_progress(), self.is_cancelled(), False), block=False)
|
self.progress.put(
|
||||||
|
ProgressCommand(
|
||||||
|
self.job,
|
||||||
|
self.device.device,
|
||||||
|
True,
|
||||||
|
self.get_progress(),
|
||||||
|
self.is_cancelled(),
|
||||||
|
False,
|
||||||
|
),
|
||||||
|
block=False,
|
||||||
|
)
|
||||||
|
|
||||||
def set_failed(self) -> None:
|
def set_failed(self) -> None:
|
||||||
logger.warning("setting failure for job %s", self.job)
|
logger.warning("setting failure for job %s", self.job)
|
||||||
try:
|
try:
|
||||||
self.progress.put(ProgressCommand(self.job, self.device.device, True, self.get_progress(), self.is_cancelled(), True), block=False)
|
self.progress.put(
|
||||||
except:
|
ProgressCommand(
|
||||||
|
self.job,
|
||||||
|
self.device.device,
|
||||||
|
True,
|
||||||
|
self.get_progress(),
|
||||||
|
self.is_cancelled(),
|
||||||
|
True,
|
||||||
|
),
|
||||||
|
block=False,
|
||||||
|
)
|
||||||
|
except Exception:
|
||||||
logger.exception("error setting failure on job %s", self.job)
|
logger.exception("error setting failure on job %s", self.job)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ from collections import Counter
|
||||||
from logging import getLogger
|
from logging import getLogger
|
||||||
from queue import Empty
|
from queue import Empty
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
from typing import Any, Callable, Dict, List, Optional, Tuple
|
from typing import Callable, Dict, List, Optional, Tuple
|
||||||
|
|
||||||
from torch.multiprocessing import Process, Queue, Value
|
from torch.multiprocessing import Process, Queue, Value
|
||||||
|
|
||||||
|
@ -149,11 +149,15 @@ class DevicePoolExecutor:
|
||||||
del self.active_jobs[progress.job]
|
del self.active_jobs[progress.job]
|
||||||
self.join_leaking()
|
self.join_leaking()
|
||||||
else:
|
else:
|
||||||
logger.debug("progress update for job: %s to %s", progress.job, progress.progress)
|
logger.debug(
|
||||||
|
"progress update for job: %s to %s", progress.job, progress.progress
|
||||||
|
)
|
||||||
self.active_jobs[progress.job] = progress
|
self.active_jobs[progress.job] = progress
|
||||||
if progress.job in self.cancelled_jobs:
|
if progress.job in self.cancelled_jobs:
|
||||||
logger.debug(
|
logger.debug(
|
||||||
"setting flag for cancelled job: %s on %s", progress.job, progress.device
|
"setting flag for cancelled job: %s on %s",
|
||||||
|
progress.job,
|
||||||
|
progress.device,
|
||||||
)
|
)
|
||||||
self.context[progress.device].set_cancel()
|
self.context[progress.device].set_cancel()
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@ from logging import getLogger
|
||||||
from os import getpid
|
from os import getpid
|
||||||
from queue import Empty
|
from queue import Empty
|
||||||
from sys import exit
|
from sys import exit
|
||||||
from traceback import format_exception
|
|
||||||
|
|
||||||
from setproctitle import setproctitle
|
from setproctitle import setproctitle
|
||||||
|
|
||||||
|
@ -54,10 +53,8 @@ def worker_main(context: WorkerContext, server: ServerContext):
|
||||||
logger.info("worker got keyboard interrupt")
|
logger.info("worker got keyboard interrupt")
|
||||||
context.set_failed()
|
context.set_failed()
|
||||||
exit(EXIT_INTERRUPT)
|
exit(EXIT_INTERRUPT)
|
||||||
except ValueError as e:
|
except ValueError:
|
||||||
logger.exception(
|
logger.exception("value error in worker, exiting: %s")
|
||||||
"value error in worker, exiting: %s"
|
|
||||||
)
|
|
||||||
context.set_failed()
|
context.set_failed()
|
||||||
exit(EXIT_ERROR)
|
exit(EXIT_ERROR)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
Loading…
Reference in New Issue