diff --git a/gunicorn/pidfile.py b/gunicorn/pidfile.py index b171f7d9..8ba7fec2 100644 --- a/gunicorn/pidfile.py +++ b/gunicorn/pidfile.py @@ -33,12 +33,14 @@ class Pidfile: if fdir and not os.path.isdir(fdir): raise RuntimeError("%s doesn't exist. Can't create pidfile." % fdir) fd, fname = tempfile.mkstemp(dir=fdir) - os.write(fd, ("%s\n" % self.pid).encode('utf-8')) - if self.fname: - os.rename(fname, self.fname) - else: - self.fname = fname - os.close(fd) + try: + os.write(fd, ("%s\n" % self.pid).encode('utf-8')) + if self.fname: + os.rename(fname, self.fname) + else: + self.fname = fname + finally: + os.close(fd) # set permissions to -rw-r--r-- os.chmod(self.fname, 420)