async def wait_and_quit(): nonlocal numjobs, max_running known_jobs = {} pending_jobs = set() running_jobs = set() while not (known_jobs and not pending_jobs): ts, event, job = await TracingRunningJob._TRACE.get() try: jobnum = known_jobs[job] except KeyError: if known_jobs: jobnum = max(known_jobs.values()) + 1 else: jobnum = 1 known_jobs[job] = jobnum pending_jobs.add(jobnum) running_jobs.add(jobnum) numjobs += 1 print(ts, event, jobnum) events.append((jobnum, event)) if event in {'report_success', 'report_permanent_failure'}: pending_jobs.discard(jobnum) if event in { 'report_success', 'report_permanent_failure', 'cancelled' }: running_jobs.discard(jobnum) max_running = max(len(running_jobs), max_running) cron.signal_shutdown()
async def wait_and_quit(): nonlocal numjobs known_jobs = {} pending_jobs = set() running_jobs = set() while get_now() < STOP_TIME: try: ts, event, job = await asyncio.wait_for( TracingRunningJob._TRACE.get(), 0.1) except asyncio.TimeoutError: continue try: jobnum = known_jobs[job] except KeyError: if known_jobs: jobnum = max(known_jobs.values()) + 1 else: jobnum = 1 known_jobs[job] = jobnum pending_jobs.add(jobnum) running_jobs.add(jobnum) numjobs += 1 print(get_reltime(ts), event, jobnum) events.append((jobnum, event)) if event in {'report_success', 'report_permanent_failure'}: pending_jobs.discard(jobnum) if event in { 'report_success', 'report_permanent_failure', 'cancelled' }: running_jobs.discard(jobnum) cron.signal_shutdown()
async def wait_and_quit(): the_job = None while True: ts, event, job = await TracingRunningJob._TRACE.get() print(ts, event) if the_job is None: job = the_job else: assert job is the_job events.append(event) if event in {'report_success', 'report_permanent_failure'}: break cron.signal_shutdown()
async def wait_and_quit(): known_jobs = {} while True: ts, event, job = await TracingRunningJob._TRACE.get() try: jobnum = known_jobs[job] except KeyError: if known_jobs: jobnum = max(known_jobs.values()) + 1 else: jobnum = 1 known_jobs[job] = jobnum print(ts, event, jobnum) events.append((jobnum, event)) if jobnum == 3 and event == 'report_permanent_failure': break cron.signal_shutdown()