title: Create a hyperlink (or button) that executes a python script and then redirects when script completes
body: <p>Alright, I managed to get it working how I want (although some/most might disagree with the method). I used Flask as recommended below. The part that might be considered "wrong" is the 404 check loop. It isn't proper design and results in a "stuck script" error in some browsers if it goes on for too long. However, the script I want to run doesn't last long enough for that to be a problem.</p>
  
  <p>Thanks for the help and please let me know if you have any other suggestions.</p>
  
  <p>Flask App:</p>
  
  <pre><code>import threading
  import subprocess
  import os
  import sys
  from flask import Flask
  from flask import render_template, abort
  app = Flask(__name__)
  app.debug = True
  
  def run_script():
      theproc = subprocess.Popen([sys.executable, "run_me.py"])
      theproc.communicate()
  
  @app.route('/')
  def index():
      return render_template('index.html')
  
  @app.route('/generate')
  def generate():
      threading.Thread(target=lambda: run_script()).start()
      return render_template('processing.html')
  
  @app.route('/is_done')
  def is_done():
      hfile = "templates\\itworked.html"
      if os.path.isfile(hfile):
          return render_template('itworked.html')
      else:
          abort(404)
  
  if __name__ == "__main__":
      app.run()
  </code></pre>
  
  <p>processing.html:</p>
  
  <pre><code>&lt;!DOCTYPE html&gt;
  &lt;html&gt;
  &lt;head&gt;
      &lt;script src="/static/jquery.min.js"&gt;&lt;/script&gt;
  &lt;/head&gt;
  
  &lt;body&gt;
  &lt;p&gt;Processing...&lt;/p&gt;
  &lt;script&gt;
      setInterval(function()
      {
          var http = new XMLHttpRequest();
          http.open('HEAD', "is_done", false);
          http.send();
          if (http.status==200)
              window.location.replace("is_done");
      },2000);
  &lt;/script&gt;
  &lt;/body&gt;
  &lt;/html&gt;
  </code></pre>
  
  <p>Original question:</p>
  
  <p><em>I am a beginner/intermediate Python programmer and a beginning web developer so please be gentle.
  What I want:
  A user clicks a hyperlink and is taken to an intermediate web page that says something like "Processing...". In the background (on the server) this link triggers a python script that processes a file and creates a new web page. On completion of the script, the user is redirected to the newly created page.
  What I have:
  I have a script that does the processing and spits out a new page. What I haven't figured out is how to trigger the python script and then trigger the redirect on script completion. I've looked at web frameworks like django, and cgi scripting. But I haven't found anything I feel fits the bill. It's very possible I'm just missing something completely obvious so I'd really appreciate any help.
  Thanks.</em></p>