Advanced Usage
Debugging Mode
WARNING: this should not be enabled in production
from foxcross.serving import run_model_serving
run_model_serving(debug=True)
or
from foxcross.serving import compose_models
app = compose_models(debug=True)
Changing the serving module name
If you don't want to serve your models from models.py
, pass a different module name when
running the serving.
directory structure
.
+-- data.json
+-- my_awesome_module.py
from foxcross.serving import run_model_serving
run_model_serving(module_name="my_awesome_module")
or
from foxcross.serving import compose_models
app = compose_models(module_name="my_awesome_module")
Requiring HTTPS connections
To more securely serve your models, you can require all connections to your model be encrypted via HTTPS
from foxcross.serving import run_model_serving
run_model_serving(redirect_https=True)
or
from foxcross.serving import compose_models
app = compose_models(redirect_https=True)
Improving performance
To help improve performance, Foxcross supports using extra packages.
UJSON
UJSON is supported to speed up JSON serialization and deserialization.
To install ujson
with Foxcross, use:
pip install foxcross[ujson]
Modin
Modin is supported to speed up pandas
operations.
To install modin
with Foxcross, use:
pip install foxcross[modin]
Overriding the HTTP status code in custom exceptions
The custom exceptions, PredictionError
, PreProcessingError
, and PostProcessingError
come with default HTTP status codes returned to the user. These default status codes can be
overridden using the http_status_code
class attribute
from foxcross.serving import ModelServing
from foxcross.exceptions import PredictionError
class AddOneModel(ModelServing):
test_data_path = "data.json"
def predict(self, data):
try:
return [x + 1 for x in data]
except ValueError as exc:
new_exc = PredictionError(f"Failed to do prediction: {exc}")
new_exc.http_status_code = 500
raise new_exc