Пытаюсь по методичке написать клиент-серверное приложение на питоне с примерным принципом работы:Запускается сервер,ждет пока к нему подключится клиент,от клиента поступают какие либо данные,и после сервер генерирует и запускает новую страницу где реализована работа с клиентом,примерный код ниже.Собственно вопрос,как сделать так чтобы,сгенерированная страница,автоматически запускалась после генерирования.Попытка заново вызвывать функцию get не удалась,документацию по нужной теме тоже не могу найти :(
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
import threading
import tornado.websocket
import tornado.web
import tornado.ioloop
import lxml.etree as ET
#обработчик запросов к http серверу
strfile="client.html"
class MainHandler(tornado.web.RequestHandler):
#обработка запроса get
def get(self):
print('Get')
#передаем нашу страницу в которой реализована работа с клиентом
self.render(strfile)
#обработчик событий вебсоккетов
class EchoWebSocket(tornado.websocket.WebSocketHandler):
clients = []#массив клиентов
fl = True
index = 0
#процедура отправки клиенту текущего индекса через 3 сек
def go(self,client):
print('ok')
if(self.fl):
self.index=self.index+1
s = u'{"type": "chat", "data": "' +str(self.index) +'"}'
print("send message : "+s)
#посылаем сообщение клиенту
client.write_message(s)
#проверяются и датся права на действия с соккетом, здесь права даются всем
def check_origin(self, origin):
return True
#обработка события открытия соединения
def open(self):
print("Client open")
#добавляем клиента в список
self.clients.append(self)
self.fl = True
#запускаем поток отправки сообщение клиенту
self.go(self)
#обработка прихода события от сервера########################
def on_message(self, message):
print("Client message "+message)
#парсим xml файл в dom
dom = ET.parse("file.xml")
#парсим шаблон в dom
xslt = ET.parse("file.xslt")
#получаем трансформер
transform = ET.XSLT(xslt)
#преобразуем xml с помощью трансформера xslt
newhtml = transform(dom)
#преобразуем из памяти dom в строку, возможно, понадобится указать кодировку
strfile = ET.tostring(newhtml)###новая сгенерированная страница
#обработка события закрытия соккета клиента############################
def on_close(self):
self.fl = False
#удаляем клиента из списка
self.clients.remove(self)
print("WebSocket closed")
#создаем приложение tornado с обработчиком вебсоккетов и http сервером
app = tornado.web.Application([(r"/ws", EchoWebSocket),(r'/', HomeHandler)])
#прослушиваем на порту
app.listen(10556)
print("Start Server")
#запускаем цикл прослушивания и обработки событий
tornado.ioloop.IOLoop.instance().start()