| 612 | fd.write('\n') |
| 613 | |
| 614 | def is_live(self, url: str = None, timeout: timedelta = None): |
| 615 | if url is None: |
| 616 | url = self._http_base |
| 617 | if timeout is None: |
| 618 | timeout = timedelta(seconds=5) |
| 619 | try_until = datetime.now() + timeout |
| 620 | last_err = "" |
| 621 | while datetime.now() < try_until: |
| 622 | # noinspection PyBroadException |
| 623 | try: |
| 624 | r = self.curl_get(url, insecure=True) |
| 625 | if r.exit_code == 0: |
| 626 | return True |
| 627 | time.sleep(.1) |
| 628 | except ConnectionRefusedError: |
| 629 | log.debug("connection refused") |
| 630 | time.sleep(.1) |
| 631 | except: |
| 632 | if last_err != str(sys.exc_info()[0]): |
| 633 | last_err = str(sys.exc_info()[0]) |
| 634 | log.debug("Unexpected error: %s", last_err) |
| 635 | time.sleep(.1) |
| 636 | log.debug(f"Unable to contact server after {timeout}") |
| 637 | return False |
| 638 | |
| 639 | def is_dead(self, url: str = None, timeout: timedelta = None): |
| 640 | if url is None: |