python - How to receive dbus signals when there is a webserver running forever? -


hey guys planning make webserver works dbus signal receiving. webserver runs gevent.wsgiserver because need support of websocket, while dbus handled via python-dbus package.

the question is:

  1. webserver has event loop running forever, receive dbus signals, python-dbus requires event loop (which mainloop) run forever well.
  2. i not able make webserver running while keeping snooping dbus signals.

here codes:

if __name__ == '__main__':     log = logging.getlogger('rocket.errors')     log.setlevel(logging.info)     log.addhandler(logging.streamhandler(sys.stdout))      dbus.mainloop.glib.dbusgmainloop(set_as_default=true)     bus = dbus.systembus()     app = bottle()      # register dbus recieve handler     #bus.add_signal_receiver(hostheartbeatsignal)     bus.add_signal_receiver(testsignal)      **this block webserver running!!!!!!!!**     mainloop = gobject.mainloop()     mainloop.run()      @app.route('/websocket', skip = true)     def handle_websocket():         print "entering websocket handling"         wsock = request.environ.get('wsgi.websocket')         if not wsock:             abort(400, 'expected websocket request.')         while true:             try:                 message = wsock.receive()                 print "message received"                 wsock.send("your message was: %r" % message)                 print "message sent"             except websocketerror:                 break       default_cert = os.path.join(sys.prefix, 'share',                     os.path.basename(__file__), 'cert.pem')      gevent.pywsgi import wsgiserver     geventwebsocket import websocketerror     geventwebsocket.handler import websockethandler      server = wsgiserver(("0.0.0.0", 443), app, keyfile = default_cert,                         certfile = default_cert,                          handler_class=websockethandler)     server.serve_forever() 

you can run 1 of main loops in thread.


Comments

Popular posts from this blog

sql - VB.NET Operand type clash: date is incompatible with int error -

SVG stroke-linecap doesn't work for circles in Firefox? -

python - TypeError: Scalar value for argument 'color' is not numeric in openCV -