Pushes a task onto the queue.

        This will instantiate a ``Gator.task_class`` instance, configure
        the callable & its arguments, then push it onto the queue.

        You'll typically want to use either this method or the ``Gator.options``
        context manager (if you need to configure the ``Task`` arguments, such
        as retries, async, task_id, etc.)

        Ex::

            on_queue = gator.task(increment, incr_by=2)

        :param func: The callable with business logic to execute
        :type func: callable

        :param args: Positional arguments to pass to the callable task
        :type args: list

        :param kwargs: Keyword arguments to pass to the callable task
        :type kwargs: dict

        :returns: The ``Task`` instance

def task(self, func, *args, **kwargs):
        """
        Pushes a task onto the queue.

        This will instantiate a ``Gator.task_class`` instance, configure
        the callable & its arguments, then push it onto the queue.

        You'll typically want to use either this method or the ``Gator.options``
        context manager (if you need to configure the ``Task`` arguments, such
        as retries, async, task_id, etc.)

        Ex::

            on_queue = gator.task(increment, incr_by=2)

        :param func: The callable with business logic to execute
        :type func: callable

        :param args: Positional arguments to pass to the callable task
        :type args: list

        :param kwargs: Keyword arguments to pass to the callable task
        :type kwargs: dict

        :returns: The ``Task`` instance
        """
        task = self.task_class()
        return self.push(task, func, *args, **kwargs)