server.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. # @Author: Bachir Soussi Chiadmi <bach>
  4. # @Date: 23-05-2017
  5. # @Email: bachir@figureslibres.io
  6. # @Filename: server.py
  7. # @Last modified by: bach
  8. # @Last modified time: 03-06-2017
  9. # @License: GPL-V3
  10. from __future__ import absolute_import, print_function, division, unicode_literals
  11. import sys, os
  12. from socket import socket
  13. import socketserver
  14. import http.server
  15. import threading
  16. class Server():
  17. def __init__(self, parent):
  18. self.parent = parent
  19. # find free port
  20. sock = socket()
  21. sock.bind(('', 0))
  22. self._port = sock.getsockname()[1]
  23. sock.close()
  24. # self.initial_cwd = os.getcwd()
  25. self.thread = threading.Thread(target=self.webserver)
  26. self.thread.daemon = True
  27. self.thread.start()
  28. # os.chdir(self.initial_cwd)
  29. def webserver(self):
  30. os.chdir(self.parent.cwd)
  31. self.httpd = http.server.HTTPServer(('', self.port), http.server.SimpleHTTPRequestHandler)
  32. self.httpd.serve_forever()
  33. print("serving at port", self._port)
  34. @property
  35. def port(self):
  36. return self._port
  37. def reload(self):
  38. # self.thread.shutdown()
  39. os.chdir(self.parent.cwd)
  40. # self.thread.start()
  41. # os.chdir(self.initial_cwd)