2016-12-05 2 views
0

У меня есть некоторые периодические задачи, которые я выполняю с сельдереем (страницы синтаксического анализа). Также я установил websocket с торнадо.отправить данные из сельдерея на торнадо websocket

Я хочу передавать данные из периодических заданий в торнадо, затем записывать эти данные в websocket и использовать эти данные на моей странице html.

Как это сделать?

Я попытался импортировать модуль с веб-камерой торнадо из моего модуля с задачами сельдерея, но, конечно, это не сработало.

Я знаю только, как вернуть некоторые данные, если я получаю сообщение с моей стороны. Вот как я справляюсь с этим:

import tornado.httpserver 
import tornado.websocket 
import tornado.ioloop 
import tornado.web 
import socket 
''' 
This is a simple Websocket Echo server that uses the Tornado websocket handler. 
Please run `pip install tornado` with python of version 2.7.9 or greater to install tornado. 
This program will echo back the reverse of whatever it recieves. 
Messages are output to the terminal for debuggin purposes. 
''' 
class handler(): 
    wss = [] 



class WSHandler(tornado.websocket.WebSocketHandler): 
    def open(self): 
     print ('new connection') 
     if self not in handler.wss: 
      handler.wss.append(self) 

    def on_message(self, message): 
     print ('message received: ' + message) 
     wssend('Ihaaaa') 

    def on_close(self): 
     print ('connection closed') 
     if self in handler.wss: 
      handler.wss.remove(self) 

    def check_origin(self, origin): 
     return True 


def wssend(message): 
    print(handler.wss) 
    for ws in handler.wss: 
     if not ws.ws_connection.stream.socket: 
      print ("Web socket does not exist anymore!!!") 
      handler.wss.remove(ws) 
     else: 
      print('I am trying!') 
      ws.write_message(message) 
      print('tried') 

application = tornado.web.Application([ 
    (r'/ws', WSHandler), 
]) 


if __name__ == "__main__": 
    http_server = tornado.httpserver.HTTPServer(application) 
    http_server.listen(8888) 
    myIP = socket.gethostbyname(socket.gethostname()) 
    print ('*** Websocket Server Started at %s***' % myIP) 
    main_loop = tornado.ioloop.IOLoop.instance() 
    main_loop.start() 

ответ

0

Опция, чтобы сделать ручку в торнадо, а затем опубликовать результаты сельдерея задачи к этой ручке. После этого будет возможность передать эти данные в websocket.