def request(func=None, timeout=600):
    """
    use to request an api call from a specific endpoint
    """
    if func is None:
        return partial(request, timeout=timeout)

    @wraps(func)
    def wrapper(self, *args, **kwargs):
        params = func(self, *args, **kwargs)
        self = params.pop('self', None)
        entity = params.pop('entity', None)
        app_name = params.pop('app_name', None)
        request_id = unique_hex()
        params['request_id'] = request_id
        future = self._send_request(app_name, endpoint=func.__name__, entity=entity, params=params, timeout=timeout)
        return future

    wrapper.is_request = True
    return wrapper
use to request an api call from a specific endpoint