def _rerun_stalled_tasks(self, tasks):
now = datetime.datetime.now(pytz.UTC)
for task in tasks:
timeout = datetime.timedelta(seconds=task.job.timeout)
if not timeout:
continue
res = parse.parse(TASK_TAKEN_FMT, task.status.description)
if not res:
continue
taken_on = dateutil.parser.parse(res['date'])
extra = datetime.timedelta(seconds=STALE_TASK_EXTRA_TIME)
deadline = taken_on + timeout + extra
if deadline > now:
continue
taken_by = res['runner_id']
logger.debug("Task %s on PR %d is stale, recreating. Was "
"taken on %s by %s timeout %ds.", task.name,
task.pull.pull.number, taken_on, taken_by,
timeout)
Status.create(task.repo, task.pull, task.name,
'unassigned', '', 'pending')
评论列表
文章目录