driver_tsc/driver/main.py

76 lines
2.7 KiB
Python

'''
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/<ip>/<command>', 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/<command>', 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)