示例#1
0
def test_request(content_type_header):
    headers = {
        content_type_header: _content_types.JSON,
        "Accept": _content_types.CSV
    }

    request = _worker.Request(test.environ(data="42", headers=headers))

    assert request.content_type == _content_types.JSON
    assert request.accept == _content_types.CSV
    assert request.content == "42"

    headers = {
        content_type_header: _content_types.NPY,
        "Accept": _content_types.CSV
    }
    request = _worker.Request(
        test.environ(data=_encoders.encode([6, 9.3], _content_types.NPY),
                     headers=headers))

    assert request.content_type == _content_types.NPY
    assert request.accept == _content_types.CSV

    result = _encoders.decode(request.data, _content_types.NPY)
    np.testing.assert_array_equal(result, np.array([6, 9.3]))
示例#2
0
def test_request_content_type(content_type_header):
    response = test.request(headers={content_type_header: _content_types.CSV})
    assert response.content_type == _content_types.CSV

    response = _worker.Request(
        test.environ(headers={"ContentType": _content_types.NPY}))
    assert response.content_type == _content_types.NPY
def request(
    path="/",
    base_url=None,
    query_string=None,
    method="GET",
    input_stream=None,
    content_length=None,
    headers=None,
    data=None,
    charset="utf-8",
    mimetype=None,
):
    _environ = environ(
        path,
        base_url,
        query_string,
        method,
        input_stream,
        content_length,
        headers,
        data,
        charset,
        mimetype,
    )

    return _worker.Request(_environ)
示例#4
0
def request(path='/',
            base_url=None,
            query_string=None,
            accept=None,
            method='GET',
            input_stream=None,
            content_type=None,
            content_length=None,
            headers=None,
            data=None,
            charset='utf-8',
            mimetype=None):

    headers = headers or {}

    if accept:
        headers['accept'] = accept

    environ_builder = werkzeug_test.EnvironBuilder(
        path=path,
        base_url=base_url,
        query_string=query_string,
        method=method,
        input_stream=input_stream,
        content_type=content_type,
        content_length=content_length,
        headers=headers,
        data=data,
        charset=charset,
        mimetype=mimetype)

    return _worker.Request(environ_builder.get_environ())
    def transform(self):  # type: () -> _worker.Response
        """Responsible to make predictions against the model.

        Returns:
            (worker.Response): a Flask response object with the following args:

                * Args:
                    response: the serialized data to return
                    accept: the content-type that the data was transformed to.
        """
        request = _worker.Request()

        try:
            data = self._input_fn(request.content, request.content_type)
        except _errors.UnsupportedFormatError as e:
            return self._error_response(e, http_client.UNSUPPORTED_MEDIA_TYPE)

        prediction = self._predict_fn(data, self._model)

        try:
            result = self._output_fn(prediction, request.accept)
        except _errors.UnsupportedFormatError as e:
            return self._error_response(e, http_client.NOT_ACCEPTABLE)

        if isinstance(result, tuple):
            # transforms tuple in Response for backwards compatibility
            return _worker.Response(response=result[0], accept=result[1])

        return result
示例#6
0
def test_request_with_accept(serving_env):
    serving_env.default_accept = "application/NPY"

    request = _worker.Request(
        test.environ(headers={"Accept": _content_types.CSV}),
        serving_env=serving_env)

    assert request.accept == "text/csv"
示例#7
0
def request(path='/',
            base_url=None,
            query_string=None,
            method='GET',
            input_stream=None,
            content_length=None,
            headers=None,
            data=None,
            charset='utf-8',
            mimetype=None):
    _environ = environ(path, base_url, query_string, method, input_stream,
                       content_length, headers, data, charset, mimetype)

    return _worker.Request(_environ)
示例#8
0
    def transform(self):  # type: () -> _worker.Response
        """Take a request with input data, deserialize it, make a prediction, and return a
        serialized response.

        Returns:
            sagemaker_containers.beta.framework.worker.Response: a Flask response object with
                the following args:

                * response: the serialized data to return
                * accept: the content type that the data was serialized into
        """
        request = _worker.Request()
        result = self._transform_fn(self._model, request.content,
                                    request.content_type, request.accept)

        if isinstance(result, tuple):
            # transforms tuple in Response for backwards compatibility
            return _worker.Response(response=result[0], accept=result[1])

        return result
示例#9
0
    def transform(self):  # type: () -> _worker.Response
        """Responsible to make predictions against the model.

        Returns:
            (worker.Response): a Flask response object with the following args:

                * Args:
                    response: the serialized data to return
                    accept: the content-type that the data was transformed to.
        """
        request = _worker.Request()

        data = self._input_fn(request.content, request.content_type)
        prediction = self._predict_fn(data, self._model)
        result = self._output_fn(prediction, request.accept)

        if isinstance(result, tuple):
            # transforms tuple in Response for backwards compatibility
            return _worker.Response(response=result[0], accept=result[1])

        return result
示例#10
0
def test_request_without_accept(serving_env):
    serving_env.default_accept = "application/json"

    request = _worker.Request(test.environ(), serving_env=serving_env)
    assert request.accept == "application/json"