Server timeout σε python script
Δημοσιεύτηκε: 30 Νοέμ 2015, 16:50
Χαιρετώ τους προγραμματιστές του forum!
Έχω φτιάξει ένα σκριπτάκι, που συνδέεται σε έναν web server και τσεκάρει με scrapping, κάποιες τιμές (το λέω όσο πιο απλά μπορώ).
Αυτό γίνεται επαναλαμβανόμενα, θεωρητικά 24 ώρες το 24ωρο, κάθε 5 λεπτά.
Το πρόβλημά μου είναι, ότι ορισμένες φορές δεν αποκρίνεται ο server και το σκριπτ κολλάει. Όταν το κάνει αυτό στην φάση την επικοινωνίας με το server, τότε έχω βάλει να μην κολλάει στο error και να πηγαίνει παρακάτω.
Όταν όμως ο server αποκρίνεται αλλά αργεί πολύ με αποτέλεσμα να κάνει ο ίδιος ο server timeout, το script δεν το καταλαβαίνει και περιμένει να λάβει τιμές, τις οποίες δεν λαμβάνει προφανώς ποτέ, οπότε μένει κολλημένο σε αυτό το σημείο.
Οπότε, θα ήθελα να μάθω, αν μπορώ να βάλω ένα timeout σε μια επανάληψη, ώστε, αν δεν ολοκληρωθεί το loop πχ μέσα σε 1 λεπτό, να ξεκινάει από την αρχή.
Νομίζω ότι αυτό θα έλυνε τα κολλήματα.
Έχω φτιάξει ένα σκριπτάκι, που συνδέεται σε έναν web server και τσεκάρει με scrapping, κάποιες τιμές (το λέω όσο πιο απλά μπορώ).
Αυτό γίνεται επαναλαμβανόμενα, θεωρητικά 24 ώρες το 24ωρο, κάθε 5 λεπτά.
Το πρόβλημά μου είναι, ότι ορισμένες φορές δεν αποκρίνεται ο server και το σκριπτ κολλάει. Όταν το κάνει αυτό στην φάση την επικοινωνίας με το server, τότε έχω βάλει να μην κολλάει στο error και να πηγαίνει παρακάτω.
- Κώδικας: Επιλογή όλων
try: #vazoume to try - except:pass gia na mhn kollaei to programma an xathei h syndesh
htmlfile = urllib.urlopen("http://192.168.1............html") #edw katevazei to arxeio html twn timwn
except:
pass
Όταν όμως ο server αποκρίνεται αλλά αργεί πολύ με αποτέλεσμα να κάνει ο ίδιος ο server timeout, το script δεν το καταλαβαίνει και περιμένει να λάβει τιμές, τις οποίες δεν λαμβάνει προφανώς ποτέ, οπότε μένει κολλημένο σε αυτό το σημείο.
Οπότε, θα ήθελα να μάθω, αν μπορώ να βάλω ένα timeout σε μια επανάληψη, ώστε, αν δεν ολοκληρωθεί το loop πχ μέσα σε 1 λεπτό, να ξεκινάει από την αρχή.
Νομίζω ότι αυτό θα έλυνε τα κολλήματα.