Advertisement
Guest User

Untitled

a guest
Sep 3rd, 2015
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. import socket
  2. import os
  3.  
  4. def watchdog_period():
  5. """ Return the time (in seconds) that we need to ping within """
  6.  
  7. val = os.environ.get("WATCHDOG_USEC", None)
  8. if not val:
  9. return None
  10. return val/1000
  11.  
  12.  
  13. def watchdog_socket(clean_environment=True):
  14. """clean_environment removes the variables from env to prevent children
  15. from inheriting it and doing something wrong"""
  16.  
  17. _empty = None, None
  18. address = os.environ.get("NOTIFY_SOCKET", None)
  19. if clean_environment:
  20. address = os.environ.pop("NOTIFY_SOCKET", None)
  21.  
  22. if not address:
  23. return _empty
  24.  
  25. if len(address) == 1:
  26. return _empty
  27.  
  28. if address[0] not in ("@", "/"):
  29. return _empty
  30.  
  31. if address[0] == "@":
  32. address = "\0" + address[1:]
  33.  
  34. # SOCK_CLOEXEC was added in Python 3.2 and requires Linux >= 2.6.27.
  35. # It means "close this socket after fork/exec()
  36. try:
  37. sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM | socket.SOCK_CLOEXEC)
  38. except AttributeError:
  39. sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
  40.  
  41. return address, sock
  42.  
  43. def watchdog_ping(address, sock):
  44. message = "WATCHDOG=1"
  45. if not (address and sock):
  46. return False
  47. try:
  48. retval = sock.sendto(message, address)
  49. except socket.error:
  50. return False
  51.  
  52. return (retval > 0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement