async def take(self, timeout=None):
        """
            Takes task from the queue, waiting the timeout if specified

            :param timeout: Seconds to wait for ready tasks
            :return: Task instance
        """
        args = None
        if timeout is not None:
            args = (timeout,)

        res = await self.conn.call(self.__funcs['take'], args)
        if len(res.body) > 0:
            return self._create_task(res.body)
        return None