code: async def reclaim_task(context, task):
      
      while True:
          log.debug("waiting %s seconds before reclaiming..." % context.config['reclaim_interval'])
          await asyncio.sleep(context.config['reclaim_interval'])
          if task != context.task:
              return
          log.debug("Reclaiming task...")
          try:
              context.reclaim_task = await context.temp_queue.reclaimTask(
                  get_task_id(context.claim_task),
                  get_run_id(context.claim_task),
              )
              clean_response = deepcopy(context.reclaim_task)
              clean_response['credentials'] = "{********}"
              log.debug("Reclaim task response:\n{}".format(pprint.pformat(clean_response)))
          except taskcluster.exceptions.TaskclusterRestFailure as exc:
              if exc.status_code == 409:
                  log.debug("409: not reclaiming task.")
                  if context.proc and task == context.task:
                      message = "Killing task after receiving 409 status in reclaim_task"
                      log.warning(message)
                      await context.proc.stop()
                      raise ScriptWorkerTaskException(message, exit_code=context.config['invalid_reclaim_status'])
                  break
              else:
                  raise
docs: Try to reclaim a task from the queue.
  
      This is a keepalive / heartbeat.  Without it the job will expire and
      potentially be re-queued.  Since this is run async from the task, the
      task may complete before we run, in which case we'll get a 409 the next
      time we reclaim.
  
      Args:
          context (scriptworker.context.Context): the scriptworker context
  
      Raises:
          taskcluster.exceptions.TaskclusterRestFailure: on non-409 status_code
              from taskcluster.aio.Queue.reclaimTask()