title: Run Python Script every X seconds
body: <p>I have a Python script that runs fine on boot to detect the status of a wifi connection and write an HTML IMG tag to file dependent on the script result.</p>
  
  <p>I want this to run "constantly" and I know this can be acheived by using a CRON job but the most frequent running of the script would be 1 min and I would like to know within seconds of the result changing.</p>
  
  <p>I have tried many variations of the bellow code but it dosen't ever seem to run. (I remove the WiFi dongle and it should change. If I remove it and reboot the correct result is displayed.)</p>
  
  <p><strong>PYTHON:</strong></p>
  
  <pre><code>import time, urllib2
  
  def internet_on():
      try:
          response=urllib2.urlopen('http://64.233.160.94',timeout=1)
          return '&lt;img class="right" src="networkon.png" width="32" height="32"&gt;'
      except urllib2.URLError as err: pass
      return '&lt;img class="right" src="networkoff.png" width="32" height="32"&gt;'
  
  output = internet_on()    
  f = open('/var/www/html/viv/wifiout.html', 'w')
  print &gt;&gt; f, output
  f.close()
  
  time.sleep(1)
  
  while True:
      internet_on()
  </code></pre>
  
  <p><strong>HTML:</strong></p>
  
  <pre><code>&lt;!DOCTYPE html&gt;
  &lt;html&gt;
  &lt;head&gt;
  &lt;meta charset="UTF-8"&gt;
  &lt;title&gt;Vivarium Enviroment Control Centre&lt;/title&gt;
  &lt;link rel="stylesheet" href="style.css"&gt;
  &lt;script src="https://code.jquery.com/jquery-1.12.0.min.js"&gt;&lt;/script&gt;
  &lt;script type="text/javascript"&gt;
      function updateTime() {
          var currentTime = new Date();
          var hours = currentTime.getHours();
          var minutes = currentTime.getMinutes();
          var seconds = currentTime.getSeconds();
          if (minutes &lt; 10){
              minutes = "0" + minutes;
          }
          if (seconds &lt; 10){
              seconds = "0" + seconds;
          }
          var v = hours + ":" + minutes + ":" + seconds + " ";
          if(hours &gt; 11){
              v+="PM";
          } else {
              v+="AM"
          }
          setTimeout("updateTime()",1000);
          document.getElementById('time').innerHTML=v;
      }
  
    $("document").ready(function(){
          updateTime();
  
          setInterval(function(){
            $("#wifi").load('wifiout.html');
          },1000);
        });
  
  function changeStatus() {
      var image = document.getElementById('lightStatus');
      if (image.src.match("lightoff")) {
          image.src = "lighton.png";
      } else {
          image.src = "lightoff.png";
      }
  }
  &lt;/script&gt;
  &lt;/head&gt;
  &lt;body&gt;
  &lt;div id="topbar"&gt;
      &lt;span id="time"&gt;&lt;/span&gt;
      &lt;span id="wifi"&gt;&lt;/span&gt;
      &lt;img id="lightStatus" class="right" onclick="changeStatus()" src="lightoff.png" width="32" height="32"&gt;
  &lt;/div&gt;
  &lt;/body&gt;
  &lt;/html&gt;
  </code></pre>
  
  <p><strong>ERROR THROWN AFTER RUNNING FOR A WHILE APPLYING THE ACCEPTED ANSWER</strong></p>
  
  <blockquote>
    <p>pi@Vivarium:~ $ sudo python /home/pi/Desktop/wifi.py
    Traceback (most recent call last):
      File "/home/pi/Desktop/wifi.py", line 17, in 
        internet_on()
      File "/home/pi/Desktop/wifi.py", line 8, in internet_on
        urllib2.urlopen('<a href="http://64.233.160.94" rel="nofollow">http://64.233.160.94</a>',timeout=1)
      File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen
        return opener.open(url, data, timeout)
      File "/usr/lib/python2.7/urllib2.py", line 437, in open
        response = meth(req, response)
      File "/usr/lib/python2.7/urllib2.py", line 550, in http_response
        'http', request, response, code, msg, hdrs)
      File "/usr/lib/python2.7/urllib2.py", line 469, in error
        result = self._call_chain(*args)
      File "/usr/lib/python2.7/urllib2.py", line 409, in _call_chain
        result = func(*args)
      File "/usr/lib/python2.7/urllib2.py", line 656, in http_error_302
        return self.parent.open(new, timeout=req.timeout)
      File "/usr/lib/python2.7/urllib2.py", line 437, in open
        response = meth(req, response)
      File "/usr/lib/python2.7/urllib2.py", line 550, in http_response
        'http', request, response, code, msg, hdrs)
      File "/usr/lib/python2.7/urllib2.py", line 469, in error
        result = self._call_chain(*args)
      File "/usr/lib/python2.7/urllib2.py", line 409, in _call_chain
        result = func(*args)
      File "/usr/lib/python2.7/urllib2.py", line 656, in http_error_302
        return self.parent.open(new, timeout=req.timeout)
      File "/usr/lib/python2.7/urllib2.py", line 431, in open
        response = self._open(req, data)
      File "/usr/lib/python2.7/urllib2.py", line 449, in _open
        '_open', req)
      File "/usr/lib/python2.7/urllib2.py", line 409, in _call_chain
        result = func(*args)
      File "/usr/lib/python2.7/urllib2.py", line 1227, in http_open
        return self.do_open(httplib.HTTPConnection, req)
      File "/usr/lib/python2.7/urllib2.py", line 1200, in do_open
        r = h.getresponse(buffering=True)
      File "/usr/lib/python2.7/httplib.py", line 1073, in getresponse
        response.begin()
      File "/usr/lib/python2.7/httplib.py", line 415, in begin
        version, status, reason = self._read_status()
      File "/usr/lib/python2.7/httplib.py", line 371, in _read_status
        line = self.fp.readline(_MAXLINE + 1)
      File "/usr/lib/python2.7/socket.py", line 476, in readline
        data = self._sock.recv(self._rbufsize)
    socket.timeout: timed out</p>
  </blockquote>