title: How to send data from server to client in Python using Flask?
body: <p>I'm making an application that sends data to a client, then the client prints the data.</p>
  
  <p>I'm using Flask as a back-end framework that handles the server side, and another python script that generates random ID for the current client, the client checks every 4 seconds if new data comes in, if it gets data it should print it.</p>
  
  <p><strong>Back-end code</strong></p>
  
  <pre><code>@app.route('/data/api/interact/&lt;string:client_id&gt;', methods=['GET', 'POST'])
  @login_required
  def interact(client_id):
      global data
  
      form = Interact()
      data = ''
  
      if form.is_submitted():
          get_data = form.ct.data
  
          if get_data == 'hello':
              data = 'Hi how are you?'
  
          return redirect(url_for('data_handler', client_id=client_id, data=form.ct.data))
  
      return render_template('interact.html', form=form, client_id=client_id)
  
  @app.route('/data/api/interact/handler/', methods=['GET', 'POST'])
  def data_handler():
      client_id = request.args.get('client_id')
      get_data = request.args.get('data')
      return json.dumps({'client_id': client_id, 'data': get_data})
  </code></pre>
  
  <p><strong>Client script</strong></p>
  
  <pre><code>handler_url = 'http://192.168.0.102:5000/data/api/interact/handler/'
  
  class check_data(threading.Thread):
      def __init__(self, client_id):
          threading.Thread.__init__(self)
          self.event = threading.Event()
          self.client_id = client_id
  
      def run(self):
          global handler_url
  
          try:
              while not self.event.is_set():
                  file = urllib2.urlopen(handler_url)
                  xml = file.read()
                  print xml
                  file.close()
          except:
              pass
  
          self.event.wait(4)
  
  def new_client():
          client_id = 'ClientId' + str(random.randrange(1, 500))
          return client_id
  
  client_id = 'null'
  
  while client_id == 'null':
      client_id = new_client()
  
      if 'null' not in client_id:
          break
  
  print 'Client ID: ' + client_id
  
  client = check_data(client_id)
  client.start()
  </code></pre>
  
  <p>Everything works, but if I send data from the server to the client it prints:</p>
  
  <p><code>{'data': '', 'client_id': null}</code></p>