Fixed #9084 - Best approach for an OS to atomically rename the session file.
This commit is contained in:
parent
7106a1e594
commit
b9cc61021a
|
@ -1,6 +1,7 @@
|
||||||
import datetime
|
import datetime
|
||||||
import errno
|
import errno
|
||||||
import os
|
import os
|
||||||
|
import shutil
|
||||||
import tempfile
|
import tempfile
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
@ -147,7 +148,11 @@ class SessionStore(SessionBase):
|
||||||
os.write(output_file_fd, self.encode(session_data).encode())
|
os.write(output_file_fd, self.encode(session_data).encode())
|
||||||
finally:
|
finally:
|
||||||
os.close(output_file_fd)
|
os.close(output_file_fd)
|
||||||
os.rename(output_file_name, session_file_name)
|
|
||||||
|
# This will atomically rename the file (os.rename) if the OS
|
||||||
|
# supports it. Otherwise this will result in a shutil.copy2
|
||||||
|
# and os.unlink (for example on Windows). See #9084.
|
||||||
|
shutil.move(output_file_name, session_file_name)
|
||||||
renamed = True
|
renamed = True
|
||||||
finally:
|
finally:
|
||||||
if not renamed:
|
if not renamed:
|
||||||
|
|
Loading…
Reference in New Issue