code: def apply_signature(cls, instance, async=True, countdown=None, is_heavy_task=False, **kwargs):
          
          serialized_instance = utils.serialize_instance(instance)
  
          signature = cls.get_task_signature(instance, serialized_instance, **kwargs)
          link = cls.get_success_signature(instance, serialized_instance, **kwargs)
          link_error = cls.get_failure_signature(instance, serialized_instance, **kwargs)
  
          if async:
              return signature.apply_async(link=link, link_error=link_error, countdown=countdown,
                                           queue=is_heavy_task and 'heavy' or None)
          else:
              result = signature.apply()
              callback = link if not result.failed() else link_error
              if callback is not None:
                  cls._apply_callback(callback, result)
  
          return result.get()
docs: Serialize input data and apply signature