Ich führe ein Skript beim Booten und kontinuierlich jede Sekunde in Python geschrieben. Es funktioniert gut für eine begrenzte Zeit (scheint variieren ~ 5/10 Minuten) und dann produziert den folgenden Fehler unten.Python socket.timeout
Ich habe nicht versucht, die Ruhezeit zu ändern, da dies ein "Test" -Skript ist, aber ich werde Skripte verwenden, die jede Sekunde ausgeführt werden müssen, um den richtigen Weg zu finden.
Google scheint wenig Antworten zu liefern, vielleicht verwende ich die falschen Begriffe, aber ich bin mir nicht sicher, ob es die Schlafzeit ist möglicherweise ein Fehler beim Pingen der IP?
PYTHON
import time, urllib2
def internet_on():
try:
response=urllib2.urlopen('http://64.233.160.94',timeout=1)
return '<img class="right" src="networkon.png" width="32" height="32">'
except urllib2.URLError as err: pass
return '<img class="right" src="networkoff.png" width="32" height="32">'
output = internet_on()
f = open('/var/www/html/viv/wifiout.html', 'w')
print >> f, output
f.close()
time.sleep(1)
while True:
internet_on()
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Vivarium Enviroment Control Centre</title>
<link rel="stylesheet" href="style.css">
<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
<script type="text/javascript">
function updateTime() {
var currentTime = new Date();
var hours = currentTime.getHours();
var minutes = currentTime.getMinutes();
var seconds = currentTime.getSeconds();
if (minutes < 10){
minutes = "0" + minutes;
}
if (seconds < 10){
seconds = "0" + seconds;
}
var v = hours + ":" + minutes + ":" + seconds + " ";
if(hours > 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";
}
}
</script>
</head>
<body>
<div id="topbar">
<span id="time"></span>
<span id="wifi"></span>
<img id="lightStatus" class="right" onclick="changeStatus()" src="lightoff.png" width="32" height="32">
</div>
</body>
</html>
Fehler ausgelöst Nach längerem RUNNING
[email protected]:~ $ sudo python /home/pi/Desktop/wifi.py
Traceback (most recent call last):
File "/home/pi/Desktop/wifi.py", line 17, in <module>
internet_on()
File "/home/pi/Desktop/wifi.py", line 8, in internet_on
urllib2.urlopen('http://64.233.160.94',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
Ihr Problem scheint Mangel an Verbindung verbunden zu sein, die eine der zwei Fragen sein könnten: Proxy oder fehlende Ansprechbarkeit von dem Zielserver. Das erste Problem hängt mit der Tatsache zusammen, dass ein Skript in Python die Anmeldeinformationen auf dem Computer nicht verwendet. Wenn Sie also einen Proxy auf Ihrem Weg haben, wird er sich nicht authentifizieren und den Fehler geben. –
Nun kein Proxy-Setup oder so Zielserver-Problem verwendet. Was wäre der Grund? Das ist die IP für Google, daher habe ich davon ausgegangen, dass Google aufgrund der Größe von Google keine Probleme verursachen würde. –
Sind Sie also absolut sicher, dass das von Ihnen verwendete Netzwerk keinen Proxy benötigt? Weil dies ein sehr häufiges Problem in Unternehmensnetzwerken ist. –