diff --git a/opentelemetry-api/src/opentelemetry/util/__init__.py b/opentelemetry-api/src/opentelemetry/util/__init__.py new file mode 100644 index 0000000000..cbf36d4c05 --- /dev/null +++ b/opentelemetry-api/src/opentelemetry/util/__init__.py @@ -0,0 +1,12 @@ +import time + +# Since we want API users to be able to provide timestamps, +# this needs to be in the API. + +try: + time_ns = time.time_ns +# Python versions < 3.7 +except AttributeError: + + def time_ns() -> int: + return int(time.time() * 1e9) diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py index f4124e3694..1cee1933e2 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py @@ -23,7 +23,7 @@ from opentelemetry.context import Context from opentelemetry.sdk import util from opentelemetry.sdk.util import BoundedDict, BoundedList -from opentelemetry.util import types +from opentelemetry.util import time_ns, types logger = logging.getLogger(__name__) @@ -205,7 +205,7 @@ def add_event( ) -> None: if attributes is None: attributes = Span.empty_attributes - self.add_lazy_event(trace_api.Event(name, util.time_ns(), attributes)) + self.add_lazy_event(trace_api.Event(name, time_ns(), attributes)) def add_lazy_event(self, event: trace_api.Event) -> None: with self._lock: @@ -249,7 +249,7 @@ def start(self, start_time: int = None): has_started = self.start_time is not None if not has_started: self.start_time = ( - start_time if start_time is not None else util.time_ns() + start_time if start_time is not None else time_ns() ) if has_started: logger.warning("Calling start() on a started span.") @@ -264,9 +264,7 @@ def end(self, end_time: int = None): raise RuntimeError("Calling end() on a not started span.") has_ended = self.end_time is not None if not has_ended: - self.end_time = ( - end_time if end_time is not None else util.time_ns() - ) + self.end_time = end_time if end_time is not None else time_ns() if has_ended: logger.warning("Calling end() on an ended span.") return diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py index 2f42c19c39..ce362813ec 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py @@ -19,7 +19,7 @@ from enum import Enum from opentelemetry.context import Context -from opentelemetry.sdk import util +from opentelemetry.util import time_ns from .. import Span, SpanProcessor @@ -163,9 +163,9 @@ def worker(self): break # substract the duration of this export call to the next timeout - start = util.time_ns() + start = time_ns() self.export() - end = util.time_ns() + end = time_ns() duration = (end - start) / 1e9 timeout = self.schedule_delay_millis / 1e3 - duration diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/util.py b/opentelemetry-sdk/src/opentelemetry/sdk/util.py index c2df2b3f4e..da6ada90c3 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/util.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/util.py @@ -14,7 +14,6 @@ import datetime import threading -import time from collections import OrderedDict, deque try: @@ -26,14 +25,6 @@ from collections import MutableMapping from collections import Sequence -try: - time_ns = time.time_ns -# Python versions < 3.7 -except AttributeError: - - def time_ns(): - return int(time.time() * 1e9) - def ns_to_iso_str(nanoseconds): """Get an ISO 8601 string from time_ns value.""" diff --git a/opentelemetry-sdk/tests/trace/test_trace.py b/opentelemetry-sdk/tests/trace/test_trace.py index 378534453c..dc593a9d62 100644 --- a/opentelemetry-sdk/tests/trace/test_trace.py +++ b/opentelemetry-sdk/tests/trace/test_trace.py @@ -16,7 +16,8 @@ from unittest import mock from opentelemetry import trace as trace_api -from opentelemetry.sdk import trace, util +from opentelemetry.sdk import trace +from opentelemetry.util import time_ns class TestTracer(unittest.TestCase): @@ -174,7 +175,7 @@ def test_span_members(self): # events root.add_event("event0") root.add_event("event1", {"name": "birthday"}) - now = util.time_ns() + now = time_ns() root.add_lazy_event( trace_api.Event("event2", now, {"name": "hello"}) )