Use contextlib.closing instead of try ... finally: sock.close

Change-Id: Ia78e9ee71b5419ce395031528dd9c17d75511e95
This commit is contained in:
Joshua Harlow
2015-08-04 17:57:38 -07:00
parent ab3c3401ce
commit 05209bb174

View File

@@ -16,6 +16,7 @@
Helper module for systemd service readiness notification.
"""
import contextlib
import logging
import os
import socket
@@ -36,15 +37,14 @@ def _sd_notify(unset_env, msg):
notify_socket = os.getenv('NOTIFY_SOCKET')
if notify_socket:
sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
try:
sock.connect(_abstractify(notify_socket))
sock.sendall(msg)
if unset_env:
del os.environ['NOTIFY_SOCKET']
except EnvironmentError:
LOG.debug("Systemd notification failed", exc_info=True)
finally:
sock.close()
with contextlib.closing(sock):
try:
sock.connect(_abstractify(notify_socket))
sock.sendall(msg)
if unset_env:
del os.environ['NOTIFY_SOCKET']
except EnvironmentError:
LOG.debug("Systemd notification failed", exc_info=True)
def notify():
@@ -81,16 +81,15 @@ def onready(notify_socket, timeout):
sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
sock.settimeout(timeout)
sock.bind(_abstractify(notify_socket))
try:
msg = sock.recv(512)
except socket.timeout:
return 2
finally:
sock.close()
if 'READY=1' in msg:
return 0
else:
return 1
with contextlib.closing(sock):
try:
msg = sock.recv(512)
except socket.timeout:
return 2
if 'READY=1' in msg:
return 0
else:
return 1
if __name__ == '__main__':