Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PHP, Perl, Python Новый топик    Ответить
 Вопрос по tornado python от новичка  [new]
SilliGirl
Member

Откуда:
Сообщений: 1
Пытаюсь по методичке написать клиент-серверное приложение на питоне с примерным принципом работы:Запускается сервер,ждет пока к нему подключится клиент,от клиента поступают какие либо данные,и после сервер генерирует и запускает новую страницу где реализована работа с клиентом,примерный код ниже.Собственно вопрос,как сделать так чтобы,сгенерированная страница,автоматически запускалась после генерирования.Попытка заново вызвывать функцию get не удалась,документацию по нужной теме тоже не могу найти :(
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()
29 дек 18, 20:51    [21776646]     Ответить | Цитировать Сообщить модератору
Все форумы / PHP, Perl, Python Ответить