Insert task in task queue.

        If the task isn't found (backend 404), raises a
        :class:`gcloud.exceptions.NotFound`.

        :type description: string
        :param description: Description of task to perform

        :type tag: string
        :param tag: Optional. The tag for this task, allows leasing tasks with a specific tag

        :type client: :class:`gcloud.taskqueue.client.Client` or ``NoneType``
        :param client: Optional. The client to use.  If not passed, falls back
                       to the ``client`` stored on the task's taskqueue.

        :rtype: :class:`_Task`.
        :returns: a task
        :raises: :class:`gcloud.exceptions.NotFound`

def insert_task(self, description, tag=None, client=None):
        """ Insert task in task queue.

        If the task isn't found (backend 404), raises a
        :class:`gcloud.exceptions.NotFound`.

        :type description: string
        :param description: Description of task to perform

        :type tag: string
        :param tag: Optional. The tag for this task, allows leasing tasks with a specific tag

        :type client: :class:`gcloud.taskqueue.client.Client` or ``NoneType``
        :param client: Optional. The client to use.  If not passed, falls back
                       to the ``client`` stored on the task's taskqueue.

        :rtype: :class:`_Task`.
        :returns: a task
        :raises: :class:`gcloud.exceptions.NotFound`
        """
        client = self._require_client(client)

        new_task = {
            "queueName": self.full_name,
            "payloadBase64": base64.b64encode(description).decode('ascii'),
            "tag": tag
        }

        response = client.connection.api_request(method='POST', path=self.path + "/tasks/", data=new_task)
        task = Task(taskqueue=self, id=response.get('id'))
        task._set_properties(response)
        return task