============================================================================
Azure Machine Learning Inference HTTP Server (azureml-inference-server-http)
============================================================================
Check our official documentation `AzureML Inference Server - Docs <https://docs.microsoft.com/en-us/azure/machine-learning/how-to-inference-server-http>`__.
Please note, the AzureML Inference Server is now open source! The repo is available here: `AzureML Inference Server - Github <https://github.com/microsoft/azureml-inference-server>`__.
Changelog
=========
1.4.0 (2024-11-13)
~~~~~~~~~~~~~~~~~~
Azureml_Inference_Server_Http 1.4.0 (2024-11-13)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Deprecation
-----------
- Python 3.8 has reached the end-of-maintenance update support. The lifespan notification can be found
at https://peps.python.org/pep-0569/#lifespan. The Azureml_Inference_Server_Http dropped the support of Python 3.8
to avoid patching unsupported Python 3.8 packages.
- Deprecated the previous added support for Flask 2.0. A compatibility layer was introduced to ensure the flask 2.0 upgrade
doesn't break the users who use ``@rawhttp`` as the methods on the Flask request object. Specifically,
* ``request.headers.has_keys()`` was removed
* ``request.json`` throws an exception if the content-type is not "application/json". Previously it returns ``None``.
The compatibility layer which restored these functionalities to their previous behaviors is now removed. Users
are encouraged to audit their score scripts and migrate your score script to be compatible with Flask 2.
Flask's full changelog can be found here: https://flask.palletsprojects.com/en/2.1.x/changes/
Enhancements
------------
- Upgraded waitress (only windows) package to 3.0.1
1.3.4 (2024-10-21)
~~~~~~~~~~~~~~~~~~
Azureml_Inference_Server_Http 1.3.4 (2024-10-21)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Upgraded gunicorn and pydantic packages.
1.3.3 (2024-10-08)
~~~~~~~~~~~~~~~~~~
Upgraded flask-cors version to 5.0.0
1.3.2 (2024-08-19)
~~~~~~~~~~~~~~~~~~
Upgraded flask-cors version to 4.0.1
1.3.1 (2024-07-25)
~~~~~~~~~~~~~~~~~~
Upgraded certifi version to 2024.7.4.
1.3.0 (2024-05-30)
~~~~~~~~~~~~~~~~~~
Azureml_Inference_Server_Http 1.3.0 (2024-05-30)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enhancements
------------
- Add python 3.12 support
1.2.2 (2024-05-14)
~~~~~~~~~~~~~~~~~~
Enhancements
------------
- Update Werkzeug from <3.0.0 to >=3.0.3
1.2.1 (2024-04-25)
~~~~~~~~~~~~~~~~~~
Enhancements
------------
- Update gunicorn from 20.1.0 to 22.0.0
1.2.0 (2024-04-02)
~~~~~~~~~~~~~~~~~~
Azureml_Inference_Server_Http 1.2.0 (2024-04-02)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enhancements
------------
- Add python 3.11 support
1.1.0 (2024-02-26)
~~~~~~~~~~~~~~~~~~
Azureml_Inference_Server_Http 1.1.0 (2024-02-26)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Breaking Changes
----------------
- Azmlinfsrv will be migrating to Pydantic 2.0 in version 1.1.0. This will be a breaking change for any Pydantic 1.0 code.
1.0.0 (2023-09-21)
~~~~~~~~~~~~~~~~~~
Breaking Changes
----------------
- Deprecate Python 3.7 Support and improve documentation
0.8.4.2 (2023-09-07)
~~~~~~~~~~~~~~~~~~~~
Azureml_Inference_Server_Http 0.8.4.2 (2023-09-07)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Fixes
-----
- Updated InferenceSchema from ~=1.5.0 to ~=1.7.0 tp support MLflow NCD
0.8.4.1 (2023-08-09)
~~~~~~~~~~~~~~~~~~~~
Fixes
-----
- Fixed pydantic warning at the server startup.
0.8.4 (2023-04-19)
~~~~~~~~~~~~~~~~~~
Features
--------
- Added ability to configure seperate dedicated health check port.
Fixes
-----
- Restored streaming for score response.
- Updated the error message related to scoring script not found.
0.8.3 (2023-03-23)
~~~~~~~~~~~~~~~~~~
Fixes
-----
- Fixed the issue related to compatibility with flask1.
0.8.2 (2023-03-20)
~~~~~~~~~~~~~~~~~~
Enhancements
------------
- Warning message will be logged if there are extra keys in the config file which are not supported by the server.
0.8.1 (2023-03-06)
~~~~~~~~~~~~~~~~~~
Features
--------
- Supports loading server config from a json file.
Added support for a new env variable ``AZUREML_CONFIG_FILE``. Refer to README for detailed usage.
Enhancements
------------
- Exception details will not be returned in the HTTP response. Check the server logs for details.
0.8.0 (2022-12-15)
~~~~~~~~~~~~~~~~~~
Breaking Changes
----------------
- Drop support for Python 3.6
Enhancements
------------
- All error responses will be in json. (Format: {'message': <error_message>})
- Loggers can be configured by users through a logging.json file in
`AML_APP_ROOT` or alongside the entry script.
Log message default format has been updated. (Format: "<UTC DATE> <UTC TIME>
<LOG LEVEL CHAR> [<PID>] <LOGGER NAME> - <MESSAGE>")
0.7.7 (2022-11-01)
~~~~~~~~~~~~~~~~~~
Fixes
-----
- Upgrade ``inference-schema`` dependency to support Python 3.9
0.7.6 (2022-09-13)
~~~~~~~~~~~~~~~~~~
Fixes
-----
- ``AML_APP_ROOT`` variable is now defaulted to the current working directory
- ``AZUREML_ENTRY_SCRIPT`` is now set to an absolute path to the entry script
0.7.5 (2022-08-16)
~~~~~~~~~~~~~~~~~~
Breaking Changes
----------------
- The header for Client Request ID is renamed from ``x-client-request-id`` to ``x-ms-client-request-id``.
- Server will no longer throw an error when both ``x-ms-request-id`` and ``x-request-id`` are provided. Going forward,
``x-ms-request-id`` will be treated as the Client Request ID. However, it is still considered deprecated and users
are recommended to use ``x-ms-client-request-id`` for Client Request ID.
- When neither ``x-ms-request-id`` or ``x-ms-client-request-id`` is set, the server copies the value of
``x-request-id`` to ``x-ms-request-id``. This is done to preserve backwards compatability, ensuring that
``x-ms-request-id`` is not empty. No value is logged to AppInsights as "Client Request Id".
- When only ``x-ms-request-id`` is set, the server returns ``x-ms-request-id`` and ``x-ms-client-request-id`` set to the
value. This value is logged to AppInsights as "Client Request Id".
- When only ``x-ms-client-request-id`` is set, the server returns ``x-ms-request-id`` and ``x-ms-client-request-id``
set to the value. This value is logged to AppInsights as "Client Request Id".
- When both ``x-ms-request-id`` and ``x-ms-client-request-id`` are set, the values are returned in the respective
headers. However, only the value from ``x-ms-client-request-id`` is logged to AppInsights as "Client Request Id".
0.7.4 (2022-07-29)
~~~~~~~~~~~~~~~~~~
Fixes
-----
- Fix an issue where the server would require arguments that have default values in run().
0.7.3 (2022-07-18)
~~~~~~~~~~~~~~~~~~
Features
--------
- CORS can be enabled with the environment variable ``AML_CORS_ORIGINS``. Refer to README for detailed usage.
- Server can now be started with ``python -m azureml_inference_server_http`` in additional to ``azmlinfsrv``.
- OPTIONS calls are modified to return ``200 OK`` instead of the previous ``405 Method not allowed``.
- Users can bring their own swaggers by placing ``swagger2.json`` and ``swagger3.json`` in ``AML_APP_ROOT``.
Enhancements
------------
- Swaggers are always generated now, regardless whether the user's run() function is decorated with inference-schema.
- The x-request-id and x-client-request-id headers are now limited to 100 characters.
Fixes
-----
- Fixed an issue that prevents the server from cleanly exiting when the scoring script cannot be initialized. If
AppInsights is not enabled, users may see ``AttributeError: 'AppInsightsClient' object has no attribute 'logger'``.
0.7.2 (2022-06-06)
~~~~~~~~~~~~~~~~~~
Enhancements
------------
- Added support for Flask 2.1.
- The server now responds with a 400 Bad Request when it finds invalid inputs.
0.7.1 (2022-05-10)
~~~~~~~~~~~~~~~~~~
Deprecation
-----------
- The "x-ms-request-id" header is deprecated and is being replaced by "x-request-id". Until "x-ms-request-id" is
removed, the server will accept either header and respond with both headers set to the same request id. Providing two
request ids through the headers is not allowed and will be responded with a Bad Request.
Enhancements
------------
- Added support for Flask 2.0. A compatibility layer is introduced to ensure this upgrade doesn't break users who use
``@rawhttp`` as the methods on the Flask request object have slightly changed. Specifically,
* ``request.headers.has_keys()`` was removed
* ``request.json`` throws an exception if the content-type is not "application/json". Previously it returns ``None``.
The compatibility layer restores these functionalities to their previous behaviors. However, this compatibility layer
will be removed in a future date and users are encouraged to audit their score scripts today. To see if your score
script is ready for Flask 2, run the server with the environment variable ``AML_FLASK_ONE_COMPATIBILITY`` set to
``false``.
Flask's full changelog can be found here: https://flask.palletsprojects.com/en/2.1.x/changes/
- Added support for the "x-request-id" and "x-client-request-id" headers. A new GUID is generated for "x-request-id" if
one is not provided. These values are echoed back to the client in the response headers.
Raw data
{
"_id": null,
"home_page": null,
"name": "azureml-inference-server-http",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": null,
"author": "Microsoft Corp",
"author_email": "amlInferenceImages@microsoft.com",
"download_url": null,
"platform": null,
"description": "============================================================================\nAzure Machine Learning Inference HTTP Server (azureml-inference-server-http)\n============================================================================\n\nCheck our official documentation `AzureML Inference Server - Docs <https://docs.microsoft.com/en-us/azure/machine-learning/how-to-inference-server-http>`__.\n\nPlease note, the AzureML Inference Server is now open source! The repo is available here: `AzureML Inference Server - Github <https://github.com/microsoft/azureml-inference-server>`__.\n\nChangelog\n=========\n\n1.4.0 (2024-11-13)\n~~~~~~~~~~~~~~~~~~\nAzureml_Inference_Server_Http 1.4.0 (2024-11-13)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nDeprecation\n-----------\n\n- Python 3.8 has reached the end-of-maintenance update support. The lifespan notification can be found \n at https://peps.python.org/pep-0569/#lifespan. The Azureml_Inference_Server_Http dropped the support of Python 3.8\n to avoid patching unsupported Python 3.8 packages.\n\n- Deprecated the previous added support for Flask 2.0. A compatibility layer was introduced to ensure the flask 2.0 upgrade\n doesn't break the users who use ``@rawhttp`` as the methods on the Flask request object. Specifically,\n\n * ``request.headers.has_keys()`` was removed\n * ``request.json`` throws an exception if the content-type is not \"application/json\". Previously it returns ``None``.\n\n The compatibility layer which restored these functionalities to their previous behaviors is now removed. Users \n are encouraged to audit their score scripts and migrate your score script to be compatible with Flask 2.\n \n Flask's full changelog can be found here: https://flask.palletsprojects.com/en/2.1.x/changes/\n\nEnhancements\n------------\n\n- Upgraded waitress (only windows) package to 3.0.1\n\n1.3.4 (2024-10-21)\n~~~~~~~~~~~~~~~~~~\nAzureml_Inference_Server_Http 1.3.4 (2024-10-21)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nUpgraded gunicorn and pydantic packages.\n\n1.3.3 (2024-10-08)\n~~~~~~~~~~~~~~~~~~\n\nUpgraded flask-cors version to 5.0.0\n\n1.3.2 (2024-08-19)\n~~~~~~~~~~~~~~~~~~\n\nUpgraded flask-cors version to 4.0.1\n\n1.3.1 (2024-07-25)\n~~~~~~~~~~~~~~~~~~\n\nUpgraded certifi version to 2024.7.4.\n\n\n1.3.0 (2024-05-30)\n~~~~~~~~~~~~~~~~~~\nAzureml_Inference_Server_Http 1.3.0 (2024-05-30)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nEnhancements\n------------\n\n- Add python 3.12 support\n\n1.2.2 (2024-05-14)\n~~~~~~~~~~~~~~~~~~\n\nEnhancements\n------------\n\n- Update Werkzeug from <3.0.0 to >=3.0.3\n\n\n1.2.1 (2024-04-25)\n~~~~~~~~~~~~~~~~~~\n\nEnhancements\n------------\n\n- Update gunicorn from 20.1.0 to 22.0.0\n\n\n1.2.0 (2024-04-02)\n~~~~~~~~~~~~~~~~~~\nAzureml_Inference_Server_Http 1.2.0 (2024-04-02)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nEnhancements\n------------\n\n- Add python 3.11 support\n\n1.1.0 (2024-02-26)\n~~~~~~~~~~~~~~~~~~\nAzureml_Inference_Server_Http 1.1.0 (2024-02-26)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nBreaking Changes\n----------------\n\n- Azmlinfsrv will be migrating to Pydantic 2.0 in version 1.1.0. This will be a breaking change for any Pydantic 1.0 code.\n\n1.0.0 (2023-09-21)\n~~~~~~~~~~~~~~~~~~\n\nBreaking Changes\n----------------\n\n- Deprecate Python 3.7 Support and improve documentation\n\n\n0.8.4.2 (2023-09-07)\n~~~~~~~~~~~~~~~~~~~~\nAzureml_Inference_Server_Http 0.8.4.2 (2023-09-07)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nFixes\n-----\n\n- Updated InferenceSchema from ~=1.5.0 to ~=1.7.0 tp support MLflow NCD\n\n\n0.8.4.1 (2023-08-09)\n~~~~~~~~~~~~~~~~~~~~\n\nFixes\n-----\n\n- Fixed pydantic warning at the server startup.\n\n\n0.8.4 (2023-04-19)\n~~~~~~~~~~~~~~~~~~\n\nFeatures\n--------\n\n- Added ability to configure seperate dedicated health check port.\n\nFixes\n-----\n\n- Restored streaming for score response.\n- Updated the error message related to scoring script not found.\n\n\n0.8.3 (2023-03-23)\n~~~~~~~~~~~~~~~~~~\n\nFixes\n-----\n\n- Fixed the issue related to compatibility with flask1.\n\n\n0.8.2 (2023-03-20)\n~~~~~~~~~~~~~~~~~~\n\nEnhancements\n------------\n\n- Warning message will be logged if there are extra keys in the config file which are not supported by the server.\n\n\n0.8.1 (2023-03-06)\n~~~~~~~~~~~~~~~~~~\n\nFeatures\n--------\n\n- Supports loading server config from a json file. \n Added support for a new env variable ``AZUREML_CONFIG_FILE``. Refer to README for detailed usage.\n\nEnhancements\n------------\n\n- Exception details will not be returned in the HTTP response. Check the server logs for details.\n\n\n0.8.0 (2022-12-15)\n~~~~~~~~~~~~~~~~~~\n\nBreaking Changes\n----------------\n\n- Drop support for Python 3.6\n\nEnhancements\n------------\n\n- All error responses will be in json. (Format: {'message': <error_message>})\n- Loggers can be configured by users through a logging.json file in\n `AML_APP_ROOT` or alongside the entry script.\n\n Log message default format has been updated. (Format: \"<UTC DATE> <UTC TIME>\n <LOG LEVEL CHAR> [<PID>] <LOGGER NAME> - <MESSAGE>\")\n\n\n0.7.7 (2022-11-01)\n~~~~~~~~~~~~~~~~~~\n\nFixes\n-----\n\n- Upgrade ``inference-schema`` dependency to support Python 3.9\n\n\n0.7.6 (2022-09-13)\n~~~~~~~~~~~~~~~~~~\n\nFixes\n-----\n\n- ``AML_APP_ROOT`` variable is now defaulted to the current working directory\n- ``AZUREML_ENTRY_SCRIPT`` is now set to an absolute path to the entry script\n\n\n0.7.5 (2022-08-16)\n~~~~~~~~~~~~~~~~~~\n\nBreaking Changes\n----------------\n\n- The header for Client Request ID is renamed from ``x-client-request-id`` to ``x-ms-client-request-id``.\n- Server will no longer throw an error when both ``x-ms-request-id`` and ``x-request-id`` are provided. Going forward,\n ``x-ms-request-id`` will be treated as the Client Request ID. However, it is still considered deprecated and users\n are recommended to use ``x-ms-client-request-id`` for Client Request ID.\n\n - When neither ``x-ms-request-id`` or ``x-ms-client-request-id`` is set, the server copies the value of\n ``x-request-id`` to ``x-ms-request-id``. This is done to preserve backwards compatability, ensuring that\n ``x-ms-request-id`` is not empty. No value is logged to AppInsights as \"Client Request Id\".\n - When only ``x-ms-request-id`` is set, the server returns ``x-ms-request-id`` and ``x-ms-client-request-id`` set to the\n value. This value is logged to AppInsights as \"Client Request Id\".\n - When only ``x-ms-client-request-id`` is set, the server returns ``x-ms-request-id`` and ``x-ms-client-request-id``\n set to the value. This value is logged to AppInsights as \"Client Request Id\".\n - When both ``x-ms-request-id`` and ``x-ms-client-request-id`` are set, the values are returned in the respective\n headers. However, only the value from ``x-ms-client-request-id`` is logged to AppInsights as \"Client Request Id\".\n\n\n0.7.4 (2022-07-29)\n~~~~~~~~~~~~~~~~~~\n\nFixes\n-----\n\n- Fix an issue where the server would require arguments that have default values in run().\n\n\n0.7.3 (2022-07-18)\n~~~~~~~~~~~~~~~~~~\n\nFeatures\n--------\n\n- CORS can be enabled with the environment variable ``AML_CORS_ORIGINS``. Refer to README for detailed usage.\n- Server can now be started with ``python -m azureml_inference_server_http`` in additional to ``azmlinfsrv``.\n- OPTIONS calls are modified to return ``200 OK`` instead of the previous ``405 Method not allowed``.\n- Users can bring their own swaggers by placing ``swagger2.json`` and ``swagger3.json`` in ``AML_APP_ROOT``.\n\nEnhancements\n------------\n\n- Swaggers are always generated now, regardless whether the user's run() function is decorated with inference-schema. \n- The x-request-id and x-client-request-id headers are now limited to 100 characters.\n\nFixes\n-----\n\n- Fixed an issue that prevents the server from cleanly exiting when the scoring script cannot be initialized. If\n AppInsights is not enabled, users may see ``AttributeError: 'AppInsightsClient' object has no attribute 'logger'``.\n\n\n0.7.2 (2022-06-06)\n~~~~~~~~~~~~~~~~~~\n\nEnhancements\n------------\n\n- Added support for Flask 2.1.\n\n- The server now responds with a 400 Bad Request when it finds invalid inputs.\n\n\n0.7.1 (2022-05-10)\n~~~~~~~~~~~~~~~~~~\n\nDeprecation\n-----------\n\n- The \"x-ms-request-id\" header is deprecated and is being replaced by \"x-request-id\". Until \"x-ms-request-id\" is\n removed, the server will accept either header and respond with both headers set to the same request id. Providing two\n request ids through the headers is not allowed and will be responded with a Bad Request.\n\n\nEnhancements\n------------\n\n- Added support for Flask 2.0. A compatibility layer is introduced to ensure this upgrade doesn't break users who use\n ``@rawhttp`` as the methods on the Flask request object have slightly changed. Specifically,\n\n * ``request.headers.has_keys()`` was removed\n * ``request.json`` throws an exception if the content-type is not \"application/json\". Previously it returns ``None``.\n\n The compatibility layer restores these functionalities to their previous behaviors. However, this compatibility layer\n will be removed in a future date and users are encouraged to audit their score scripts today. To see if your score\n script is ready for Flask 2, run the server with the environment variable ``AML_FLASK_ONE_COMPATIBILITY`` set to\n ``false``.\n \n Flask's full changelog can be found here: https://flask.palletsprojects.com/en/2.1.x/changes/\n\n- Added support for the \"x-request-id\" and \"x-client-request-id\" headers. A new GUID is generated for \"x-request-id\" if\n one is not provided. These values are echoed back to the client in the response headers. \n",
"bugtrack_url": null,
"license": "https://aka.ms/azureml-sdk-license",
"summary": "Azure Machine Learning inferencing server.",
"version": "1.4.0",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "5162097d41456e8ad8f3b94ca13d85c9b82d46dbcc2c8bdf4d53ef99d6da3ea6",
"md5": "d5590908acee0a5c898b4171a5041611",
"sha256": "9d829bee21e8d6b2a021c7fdae8cca2270b31f8dfdb317437de752b0e7025c4b"
},
"downloads": -1,
"filename": "azureml_inference_server_http-1.4.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d5590908acee0a5c898b4171a5041611",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 42000,
"upload_time": "2024-11-18T17:33:18",
"upload_time_iso_8601": "2024-11-18T17:33:18.074412Z",
"url": "https://files.pythonhosted.org/packages/51/62/097d41456e8ad8f3b94ca13d85c9b82d46dbcc2c8bdf4d53ef99d6da3ea6/azureml_inference_server_http-1.4.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-18 17:33:18",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "azureml-inference-server-http"
}