karpenoktem / kninfra

Digital infrastructure of Karpe Noktem
http://karpenoktem.nl/
10 stars 14 forks source link

whim client reconnects automatically if socket is lost #389

Closed bwesterb closed 8 years ago

bwesterb commented 8 years ago

Before this change, if giedo restarts, the Django process must also be restarted as its socket expires. Now that it will automatically try to reconnect.

bwesterb commented 8 years ago

@aykevl Kun je even kijken?

aykevl commented 8 years ago

Ik vind de while in _send een beetje gek, die wordt toch maximaal 2 keer uitgevoerd. Ik denk dat het leesbaarder is zonder die loop. Zorgt voor een heel klein beetje dubbele code, maar uiteindelijk is het minder regels en ik vind het leesbaarder. Niet getest:

        with self.w_lock:
            try:
                self.f.write(bs)
                self.f.flush()
            except socket.error as e:
                if e.args[0] != errno.EPIPE:
                    raise
                self._connect()
                self.f.write(bs)
                self.f.flush()

Ik heb de pull request niet getest (neem aan dat jij het getest hebt?), maar het ziet er goed uit. Ik heb niet veel ervaring met sockets programmeren (zeker lokaal).

bwesterb commented 8 years ago

De reden is, dat ik eerst niet één keer proberen had, maar drie keer proberen met steeds langere pauzes tussen de pogingen. Als dat het enige is, dan merge ik het. Het is getest :).

bwesterb commented 8 years ago

Dank je voor het kijken.