queue#

exception Empty#

Bases: Exception

exception Busy#

Bases: Exception

class HeapSlot(job: _canary.protocols.JobProtocol)#

Bases: object

cost: float#
job: JobProtocol#
resources: list[dict[str, Any]]#
class ResourceQueue(lock: allocate_lock, resource_pool: ResourcePool, jobs: list[JobProtocol] | None = None)#

Bases: object

Heap-based resource queue for jobs.

Jobs with largest cost are scheduled first. Respects dependencies and exclusive job semantics. Raises Busy if no job can be run with available resources.

exclusive_job_id: str | None#
prepare() None#

Empty method that a subclass can implement

put(*jobs: JobProtocol) None#
get() JobProtocol#
clear(status: str = 'CANCELLED') None#
done(job: JobProtocol) None#
cases() list[JobProtocol]#

Return all jobs in queue, busy, and finished.

pending() list[JobProtocol]#
status(start: float | None = None) str#
truncate(items: Iterable[str]) str#