server.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. from abc import ABC
  2. import tornado.ioloop
  3. import tornado.web
  4. import tornado.escape
  5. import collections
  6. import json
  7. import sqlite3 as lite
  8. import sys
  9. import logging
  10. from ini_logger import *
  11. #log_dir = r'/var/log/server'
  12. #ini_logger(log_dir)
  13. inputs = [
  14. {'type': "INPUT", 'value': [0]},
  15. {'type': "INPUT", 'value': [1]},
  16. {'type': "INPUT", 'value': [2]},
  17. {'type': "INPUT", 'value': [3]},
  18. {'type': "INPUT", 'value': [4]}
  19. ]
  20. outputs = [
  21. {'type': "OUTPUT", 'value': [0]},
  22. {'type': "OUTPUT", 'value': [2]},
  23. {'type': "OUTPUT", 'value': [4]}
  24. ]
  25. def update():
  26. do_something = 1
  27. class MainHandler(tornado.web.RequestHandler, ABC):
  28. def prepare(self):
  29. self.set_header("Content-Type", "application/json")
  30. if self.request.headers.get('Content-Type') == 'application/json':
  31. print(self.request.body)
  32. self.json_args = json.loads(self.request.body.decode('utf-8'))
  33. else:
  34. self.json_args = None
  35. def get(self, param):
  36. print("INFO: GET /" + param)
  37. if param == "inputs":
  38. self.write(json.dumps(inputs))
  39. elif param == "outputs":
  40. self.write(json.dumps(outputs))
  41. elif param == "status":
  42. self.write("{\"status\": \"ready\"}")
  43. elif param == "stop":
  44. instance = tornado.ioloop.IOLoop.instance()
  45. instance.add_callback(instance.stop)
  46. else:
  47. self.write("Error: GET /" + param)
  48. print("Error: GET /" + param)
  49. def post(self, param):
  50. if param == "update":
  51. if self.json_args is not None:
  52. print("INFO: GET /" + param + "with body: " + self.json_args.dump())
  53. counter = 0
  54. for entity in self.json_args:
  55. inputs[counter]['value'] = entity['value']
  56. counter = counter + 1
  57. update()
  58. self.write(json.dumps(outputs))
  59. else:
  60. self.write("Error: POST /" + param)
  61. print("Error: POST /" + param)
  62. def make_app():
  63. return tornado.web.Application([
  64. (r"/(.*)", MainHandler),
  65. ])
  66. if __name__ == "__main__":
  67. app = make_app()
  68. app.listen(int(sys.argv[1]))
  69. tornado.ioloop.IOLoop.current().start()