''' Created on 19 mar 2020 @author: Emanuele Trabattoni @copyright: Briq srl @contact: Scritto per Briq srl come collaboratore esterno, contiene dei frammenti di codice di proprieta' di Briq srl ''' from flask import Flask, escape, request import threading import queue import sys import logging import os from waitress import serve from driver import tsc_manager, notifier #inizializza ascoltatore di Flask app = Flask(__name__) #questo manda le rest di risposta a django @app.route('/tscprinter/printer//', methods=['POST']) def printer_in(ip, command): parameters = request.get_json() queue_id = tsc_manager.get_queue_id(ip) if queue_id is not None and queue_id in queues_in: queues_in[queue_id].put({'name': command, 'parameters': parameters}) return "Comando Stampante Inviato", 200 else: return "Stampante non trovata", 404 @app.route('/tscprinter/gest/', methods=['POST']) def gest_in(command): parameters = request.get_json() queue_command = tsc_manager.get_queue_command() if queue_command is not None: queue_command.put({'name': command, 'parameters': parameters}) return "Comando Gestore Inviato", 200 else: return "Gestore non Disponibile", 404 def build_logger(): logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) logger.propagate = False formatter = logging.Formatter(("%(asctime)s|%(levelname)-7s|%(funcName)-10s|%(lineno)-3d: %(message)-50s"), ("%m-%d %H:%M:%S")) # File Logging fh = logging.FileHandler(("./log/dimelog.log")) fh.setLevel(logging.DEBUG) fh.setFormatter(formatter) logger.addHandler(fh) # Console Logging cl = logging.StreamHandler(sys.stdout) cl.setLevel(logging.DEBUG) cl.setFormatter(formatter) logger.addHandler(cl) return logger if __name__ == '__main__': logger = build_logger() queues_in = {} queue_command = queue.Queue() queue_out = queue.Queue() t_notify_django = threading.Thread(target=notifier.notifier, args=[django_addr, queue_out, logger], daemon=True) t_notify_django.start() t_manager = threading.Thread(target=tsc_manager.main, args=[queues_in, queue_out, queue_command, logger], daemon=True) t_manager.start() listen = "{}:{}".format(os.getenv("MARKOPRINTER_DRIVER_HOST"), os.getenv("MARKOPRINTER_DRIVER_PORT")) serve(app, listen=listen)