code: def run(self, service_id, user_id, email, **kwargs):
          
          log = self.get_logger(**kwargs)
  
          log.info("Loading Service for token creation")
          try:
              service = Service.objects.get(id=service_id)
              log.info("Getting token for <%s> on <%s>" % (email, service.name))
              response = self.create_token(service.url, email, service.token)
              try:
                  result = response.json()
                  ust, created = UserServiceToken.objects.get_or_create(
                      service=service, user_id=user_id, email=email)
                  ust.token = result["token"]
                  ust.save()
                  log.info(
                      "Token saved for <%s> on <%s>" % (email, service.name))
              except Exception:
                  # can't decode means there was not a valid response
                  log.info("Failed to parse response from <%s>" % (service.name))
              return "Completed getting token for <%s>" % (email)
          except ObjectDoesNotExist:
              logger.error('Missing Service', exc_info=True)
  
          except SoftTimeLimitExceeded:
              logger.error(
                  'Soft time limit exceed processing getting service token \
                   via Celery.',
                  exc_info=True)
docs: Create and Retrieve a token from remote service. Save to DB.