glance_store.common.utils 模块¶
系统级工具和辅助函数。
- class glance_store.common.utils.CooperativeReader(fd)¶
基类:
object用于读取镜像数据的 eventlet 线程友好类。
在通过迭代器或 read 方法访问数据时,我们会执行 sleep 以允许协同 yield。当有多个镜像正在上传/下载时,这可以防止 eventlet 线程饥饿,即允许所有线程定期调度,而不是让同一个线程持续活动。
- read(length=None)¶
返回底层迭代器的下一个块。
如果底层 fd 已经支持 read(),则在 __init__ 中用 cooperative_read 替换此方法。
- glance_store.common.utils.chunkiter(fp, chunk_size=65536)¶
返回一个迭代器,该迭代器产生固定大小的块,用于类似文件的对象。
- 参数:
fp – 一个类似文件的对象
chunk_size – 块的最大大小
- glance_store.common.utils.chunkreadable(iter, chunk_size=65536)¶
用一个读取器包装一个可读的迭代器,该读取器产生首选大小的块,否则保持迭代器不变。
- 参数:
iter – 一个也可能是可读的迭代器
chunk_size – 块的最大大小
- glance_store.common.utils.cooperative_iter(iter)¶
返回一个迭代器,该迭代器在每次迭代后进行调度。这可以防止 eventlet 线程饥饿。
- 参数:
iter – 要包装的迭代器
- glance_store.common.utils.cooperative_read(fd)¶
用一个偏函数包装文件描述符的 read,该偏函数在每次 read 之后进行调度。这可以防止 eventlet 线程饥饿。
- 参数:
fd – 要包装的文件描述符
- glance_store.common.utils.get_hasher(hash_algo, usedforsecurity=True)¶
根据哈希算法返回所需的哈希器。这主要是为了确保在启用 FIPS 的系统上执行时正确选择哈希算法。
- 参数:
hash_algo – 请求的哈希算法
usedforsecurity – 哈希是否用于安全上下文
- glance_store.common.utils.is_uuid_like(val)¶
返回一个值是否为 UUID 的验证。
对于我们的目的,UUID 是一个规范形式的字符串:aaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa