Python webserver,用于向/从另一个python应用程序读取/写入数据

时间:2016-04-30 18:47:07

标签: flask tornado pyside qthread qt-signals

我想在现有的python应用中添加一个简单的网络服务器。 此Web服务器应该能够读取/写入现有应用程序的数据。 我正在寻找一个简单的解决方案,只能在我的私人本地网络中运行。

我现有的python app 基于运行状态机的QT QTimer对象(使用PySide)。 状态机本身运行许多其他功能。有些功能是事件驱动的,我使用多个QT信号/插槽连接。

一般情况下,新的网络服务器应该:

  • 提供静态网站
  • 通过Ajax向客户端(Webbrowser)发送和接收一些数据。数据由我现有的python应用程序中的设置组成。

每当客户发送请求时,网络服务器应该:

  • 从我现有的python应用程序中读取数据
  • 将此数据发回客户端

问题

我的想法是使用flask作为webframework和tornado作为webserver。 我会在QThread中运行烧瓶/龙卷风。 与现有应用程序的数据交换可以通过QT信号和&插槽,因为它易于处理。

我试过了,但我无法弄清楚,如何在线程中运行烧瓶/龙卷风并使用信号& amp;同时插槽。

  • 我创建了一个workerclass并通过moveToThread(mythread)将其推送到qthread
  • 发出信号mythread.started时启动网络服务器:

    def processs(self):
      print ("thread started with id:       " + str(QThread.currentThreadId()))
      http_server = HTTPServer(WSGIContainer(self.app))
      http_server.listen(5000)
      IOLoop.instance().start()
    
  • 一个简单的测试途径如下。 在这里,我必须向现有的python应用程序发送信号并通过插槽接收数据。但我不明白如何。

    @app.route('/_add_numbers')    
    def add_numbers():
      """Add two numbers server side, ridiculous but well..."""
      a = request.args.get('a', 0, type=int)
      b = request.args.get('b', 0, type=int)
      return jsonify(result=a + b)
    

非常感谢您的回答。

的Nik

0 个答案:

没有答案