45 lines
851 B
Python
45 lines
851 B
Python
from scraper.job import *
|
|
from datetime import datetime
|
|
|
|
|
|
_jobs: list[Job] = []
|
|
|
|
|
|
def _clean_jobs():
|
|
global _jobs
|
|
_jobs = list(filter(lambda j: datetime.fromtimestamp(j.deadline) > datetime.now(), _jobs))
|
|
|
|
|
|
def working_on(block_start: int) -> bool:
|
|
global _jobs
|
|
|
|
_clean_jobs()
|
|
|
|
for job in _jobs:
|
|
if job.start <= block_start and job.start + job.size > block_start:
|
|
return True
|
|
return False
|
|
|
|
|
|
def assign_job(block_start: int, block_size: int) -> Job:
|
|
global _jobs
|
|
|
|
if working_on(block_start):
|
|
raise Exception("Job already assigned")
|
|
job = Job(block_start, block_size)
|
|
_jobs.append(job)
|
|
return job
|
|
|
|
|
|
def jobs() -> Job:
|
|
global _jobs
|
|
_clean_jobs()
|
|
for job in _jobs:
|
|
yield job
|
|
|
|
|
|
def any_job() -> bool:
|
|
global _jobs
|
|
_clean_jobs()
|
|
return bool(len(_jobs))
|