34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
import logging
|
|
|
|
from waitress import serve
|
|
|
|
from image_prediction.config import CONFIG
|
|
from image_prediction.flask import make_prediction_server
|
|
from image_prediction.pipeline import load_pipeline
|
|
from image_prediction.utils import get_logger
|
|
from image_prediction.utils.banner import show_banner
|
|
|
|
logger = get_logger()
|
|
|
|
|
|
def main():
|
|
def predict(pdf):
|
|
# Keras service_estimator.predict stalls when service_estimator was loaded in different process;
|
|
# therefore, we re-load the model (part of the pipeline) every time we process a new document.
|
|
# https://stackoverflow.com/questions/42504669/keras-tensorflow-and-multiprocessing-in-python
|
|
logger.debug("Loading pipeline...")
|
|
pipeline = load_pipeline(verbose=CONFIG.service.verbose)
|
|
logger.debug("Running pipeline...")
|
|
return list(pipeline(pdf))
|
|
|
|
prediction_server = make_prediction_server(predict)
|
|
serve(prediction_server, host=CONFIG.webserver.host, port=CONFIG.webserver.port, _quiet=False)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
logging.basicConfig(level=CONFIG.service.logging_level)
|
|
|
|
show_banner()
|
|
|
|
main()
|