将TCP Server和DASH合并为线程可得到“无属性Dash”

时间:2019-01-24 15:05:15

标签: python multithreading tcp

我正在尝试同步python脚本中的两个线程来工作。这个想法是第一个成为TCP Server的线程,它将从客户端接收数据,将数据保存在变量中,并且应将相同的变量赋予DASH脚本第二个线程,该脚本将创建图形。通过使用线程,我想使当TCP服务器中接收到新数据时,图可以自我更新。列表被更新。

代码:

app = dash.Dash()

def dash():
    app.layout = html.Div([
     html.H1('Hardware Praktikum'),
        dcc.Dropdown(
            id='my-dropdown',
         options=[
            {'label': 'Tesla', 'value': 'TSLA'},
            {'label': 'Apple', 'value': 'AAPL'}
        ],
          value='TSLA'
        ),
        dcc.Graph(id='my-graph', animate=True),
        dcc.Interval(
            id='interval-component',
            interval=1*1000, # in milliseconds
            n_intervals=0
        )
    ])

    @app.callback(Output('my-graph', 'figure'), [Input('my-dropdown', 'value')])

    def update_graph(selected_dropdown_value):

        return {
            'data': list }

    if __name__ == '__main__':
        app.run_server()

def server():
    HOST = '******' # Server IP or Hostname
    PORT = 22000 
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    print 'Socket created'

#managing error exception

    s.bind((HOST, PORT))
#except socket.error:
#   print socket.error
    #print 'Bind failed '

    s.listen(5)
    print 'Socket awaiting messages'
    (conn, addr) = s.accept()
    print 'Connected'

#List to save data
    list = []
# awaiting for message
    while True:
        data = conn.recv(1024)
        print 'Received data: ' + data
        reply = ''

        # process your message
        #break if no data
        if not data:
            break
        elif ("close"):
            break
        else:
            #append new data
            data=data.split(",")
            list.append((float(data[0]),float(data[1])))    
            reply = 'Saved'

        # Sending reply
        conn.send(reply)

    conn.close() # Close connections




dash = threading.Thread(target=dash)
server = threading.Thread(target=server)

server.start()
dash.start()    

从我的角度来看,它背后的逻辑应该可以完成这项工作。显然我错了。我得到

  

AtributeError:“线程”对象没有属性“破折号”

0 个答案:

没有答案