Over time, my use case for aiojobs got extended to require support for job priorities, i.e. it should be possible to pass a priority value to Scheduler.spawn method, and if not executed immediately, job should be placed into the pending queue at a position according to the specified priority.
If possible performance impact of replacing deque (which is the structure behind asyncio.Queue used by aiojobs) with heapq+list (used by asyncio.PriorityQueue) could be neglected, then I would suppose that implementing this feature request would be as simple as adding an optional priority parameter to spawn method and switching to PriorityQueue. Otherwise, a slightly more involved implementation would involve creating a Scheduler subclass tentatively named PriorityScheduler.
My use case doesn't require support for priorities in aiojobs.aiohttp but I suspect that it may be desirable to implement that as well for the sake of completeness.
Over time, my use case for
aiojobsgot extended to require support for job priorities, i.e. it should be possible to pass a priority value toScheduler.spawnmethod, and if not executed immediately, job should be placed into the pending queue at a position according to the specified priority.If possible performance impact of replacing
deque(which is the structure behindasyncio.Queueused byaiojobs) withheapq+list(used byasyncio.PriorityQueue) could be neglected, then I would suppose that implementing this feature request would be as simple as adding an optional priority parameter tospawnmethod and switching toPriorityQueue. Otherwise, a slightly more involved implementation would involve creating aSchedulersubclass tentatively namedPriorityScheduler.My use case doesn't require support for priorities in
aiojobs.aiohttpbut I suspect that it may be desirable to implement that as well for the sake of completeness.