1
0
mirror of https://github.com/django/django.git synced 2025-10-31 09:41:08 +00:00

Used time.monotonic() instead of time.time() where applicable.

time.monotonic() available from Python 3.3:

- Nicely communicates a narrow intent of "get a local system monotonic
  clock time" instead of possible "get a not necessarily accurate Unix
  time stamp because it needs to be communicated to outside of this
  process/machine" when time.time() is used.
  
- Its result isn't affected by the system clock updates.

There are two classes of time.time() uses changed to time.monotonic()
by this change:

- measuring time taken to run some code.

- setting and checking a "close_at" threshold for for persistent db
  connections (django/db/backends/base/base.py).
This commit is contained in:
Przemysław Suliga
2019-05-08 18:34:22 +02:00
committed by Mariusz Felisiak
parent 30dd43884e
commit af5ec222cc
4 changed files with 13 additions and 13 deletions

View File

@@ -187,7 +187,7 @@ class BaseDatabaseWrapper:
self.needs_rollback = False
# Reset parameters defining when to close the connection
max_age = self.settings_dict['CONN_MAX_AGE']
self.close_at = None if max_age is None else time.time() + max_age
self.close_at = None if max_age is None else time.monotonic() + max_age
self.closed_in_transaction = False
self.errors_occurred = False
# Establish the connection
@@ -510,7 +510,7 @@ class BaseDatabaseWrapper:
self.close()
return
if self.close_at is not None and time.time() >= self.close_at:
if self.close_at is not None and time.monotonic() >= self.close_at:
self.close()
return

View File

@@ -3,8 +3,8 @@ import decimal
import functools
import hashlib
import logging
import time
from contextlib import contextmanager
from time import time
from django.conf import settings
from django.db.utils import NotSupportedError
@@ -105,11 +105,11 @@ class CursorDebugWrapper(CursorWrapper):
@contextmanager
def debug_sql(self, sql=None, params=None, use_last_executed_query=False, many=False):
start = time()
start = time.monotonic()
try:
yield
finally:
stop = time()
stop = time.monotonic()
duration = stop - start
if use_last_executed_query:
sql = self.db.ops.last_executed_query(self.cursor, sql, params)