Пример #1
0
 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()
Пример #2
0
 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()
Пример #3
0
 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()
Пример #4
0
 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()