code: def main(event_loop=None):
      
      context, credentials = get_context_from_cmdln(sys.argv[1:])
      log.info("Scriptworker starting up at {} UTC".format(arrow.utcnow().format()))
      cleanup(context)
      context.event_loop = event_loop or asyncio.get_event_loop()
  
      done = False
  
      async def _handle_sigterm():
          log.info("SIGTERM received; shutting down")
          nonlocal done
          done = True
          if context.running_tasks is not None:
              await context.running_tasks.cancel()
  
      context.event_loop.add_signal_handler(signal.SIGTERM, lambda: asyncio.ensure_future(_handle_sigterm()))
  
      while not done:
          try:
              context.event_loop.run_until_complete(async_main(context, credentials))
          except Exception:
              log.critical("Fatal exception", exc_info=1)
              raise
docs: Scriptworker entry point: get everything set up, then enter the main loop.
  
      Args:
          event_loop (asyncio.BaseEventLoop, optional): the event loop to use.
              If None, use ``asyncio.get_event_loop()``. Defaults to None.