timeutils

与时间相关的工具和辅助函数。

class oslo_utils.timeutils.Split(elapsed, length)

一个不可变的秒表分段。

参见: http://en.wikipedia.org/wiki/Stopwatch 了解其含义/代表的内容。

1.4 版本中添加。

property elapsed

从秒表开始算起的时长。

property length

自上次分段以来的秒数(如果没有先前的分段,则为经过的时间)。

class oslo_utils.timeutils.StopWatch(duration=None)

一个简单的计时器/秒表辅助类。

灵感来自: apache-commons-lang java 秒表。

非线程安全的(当单个秒表被多个线程同时修改时)。当由单个线程使用(不共享)或通过锁在这些对象上以线程安全的方式执行操作时,它是线程安全的。

1.4 版本中添加。

__enter__()

启动秒表。

__exit__(type, value, traceback)

停止秒表(如果停止失败则忽略错误)。

elapsed(maximum=None)

返回经过的秒数。

expired()

返回秒表是否已过期(即,提供的持续时间已过去)。

has_started()

返回 True 如果秒表处于启动状态。

has_stopped()

返回 True 如果秒表处于停止状态。

leftover(return_none=False)

返回直到秒表过期还剩多少秒。

参数:

return_none (布尔值) – 当 True 时,如果没有设置持续时间,此调用将返回 None 而不是引发 RuntimeError

restart()

从启动/停止状态重新启动秒表。

resume()

从停止状态恢复秒表。

split()

捕获一个分段/自开始以来的经过时间(并且不停止)。

property splits

访问器,用于所有/任何已捕获的分段。

start()

启动秒表(如果尚未启动)。

注意(harlowja): 重置先前捕获的任何分段(如果有)。

stop()

停止秒表。

oslo_utils.timeutils.advance_time_delta(timedelta)

使用 datetime.timedelta 推进被覆盖的时间。

参见 oslo_utils.fixture.TimeFixture

oslo_utils.timeutils.advance_time_seconds(seconds)

按秒推进被覆盖的时间。

参见 oslo_utils.fixture.TimeFixture

oslo_utils.timeutils.clear_time_override()

移除被覆盖的时间。

参见 oslo_utils.fixture.TimeFixture

oslo_utils.timeutils.delta_seconds(before, after)

返回两个时间对象之间的差值。

计算两个日期、时间或 datetime 对象之间的秒数差(以微秒为单位,作为浮点数)。

oslo_utils.timeutils.is_newer_than(after, seconds)

如果 after 比 seconds 更新,则返回 True。

版本 1.7 中更改: 接受带有时区信息的 datetime 字符串。修复与时区感知 datetime 的比较。

oslo_utils.timeutils.is_older_than(before, seconds)

如果 before 比 seconds 更旧,则返回 True。

版本 1.7 中更改: 接受带有时区信息的 datetime 字符串。修复与时区感知 datetime 的比较。

oslo_utils.timeutils.is_soon(dt, window)

确定时间是否会在接下来的 window 秒内发生。

参数:
  • dt – 时间

  • window – 剩余的最小秒数,以认为时间不快

返回值:

如果到期时间在给定的持续时间内,则返回 True。

oslo_utils.timeutils.marshall_now(now=None)

创建一个具有微秒的 rpc 安全的 datetime。

版本 1.6 中更改: 现在序列化时区信息,而不是将其剥离。

oslo_utils.timeutils.normalize_time(timestamp)

将任意时区中的时间标准化为 UTC 无知对象。

oslo_utils.timeutils.parse_isotime(timestr)

从 ISO 8601 格式解析时间。

oslo_utils.timeutils.parse_strtime(timestr, fmt='%Y-%m-%dT%H:%M:%S.%f')

将格式化的时间转换回 datetime。

oslo_utils.timeutils.set_time_override(override_time=None)

覆盖 utils.utcnow。

使其返回一个常量时间或一个列表,一次一个。

参见 oslo_utils.fixture.TimeFixture

参数:

override_time – datetime 实例或列表。如果未提供,则默认为当前 UTC 时间。

time_it(logger, log_level=10, message="运行函数 '%(func_name)s' 耗时 %(seconds).02f 秒", enabled=True, min_duration=0.01)

装饰器,将记录其装饰的函数运行所需的时间。

如果装饰的函数出现异常,则此装饰器不会输出日志。

参数:
  • logger – 用于记录经过时间的日志记录器实例

  • log_level – 用于记录经过时间的日志记录器日志级别

  • message – 用于记录经过时间的自定义消息,如果找到这些值有用,该消息可以使用自动提供的 %(seconds)%(func_name)

  • enabled – 是否启用此装饰器(有用的是用此装饰器装饰一个函数,然后通过一些配置或其他值轻松地关闭该装饰器)

  • min_duration – 一个参数,用于确定是否触发日志记录,默认设置为 0.01 秒,以避免在持续时间和/或经过的函数调用时间小于 0.01 秒时进行日志记录,要禁用任何 min_duration 检查,此值应设置为小于或等于零或设置为 None

oslo_utils.timeutils.unmarshall_time(tyme)

取消序列化 datetime 字典。

版本 1.5 中更改: 删除闰秒。

版本 1.6 中更改: 添加了对时区信息的支持。

oslo_utils.timeutils.utcnow(with_timezone=False)

可重写的 utils.utcnow 版本,可以返回一个 TZ 感知 datetime。

参见 oslo_utils.fixture.TimeFixture

版本 1.6 中更改: 添加了 with_timezone 参数。

oslo_utils.timeutils.utcnow_ts(microsecond=False)

utcnow 函数的时间戳版本。

参见 oslo_utils.fixture.TimeFixture

版本 1.3 中更改: 添加了可选的 microsecond 参数。