为磁盘上的奇点图像创建永久缓存。

singularity-permanent-cache的Python项目详细描述


奇点永久缓存为上的奇点图像创建永久缓存 磁盘。它以一个URI作为参数并返回图像的位置。它 利用文件锁来防止缓存损坏。在

它将使用 SINGULARITY_PERMANENTCACHEDIRSINGULARITY_CACHEDIR环境 变量来确定缓存的位置。或者缓存目录 可以在命令行上使用-d--cache-dir标志进行设置。在

singularity-permanent-cache命令可以在脚本中使用。是的 设计时考虑了多进程的使用:文件锁可以防止损坏 当奇点永久缓存的多个实例 跑步。它可以用在这样的脚本中:

#!/usr/bin/env bash
set -eu -o pipefail

exportSINGULARITY_PERMANENTCACHEDIR=$HOME/.singularity/permanent_cache
MY_IMAGE_URI="docker://debian:buster-slim"IMAGE_LOCATION=$(singularity-permanent-cache $MY_IMAGE_URI)

cluster_submit "singularity exec $IMAGE_LOCATION echo 'Hello world!'"

Singularity永久缓存将下载debian buster slim图像 如果它还不在缓存中。如果它已经存在,它就不会再加载任何东西 在缓存里。在

警告

不要对带有不稳定标记的图像使用singularity-permanent-cache 例如docker://ubuntu:latest。一旦docker_ubuntu_latest.sif 图像在缓存中,singularity-permanent-cache将永远不会检查 更新版本!在

使用具有稳定标记的容器,例如biocontainers或使用哈希。(例如: ubuntu@sha256:a69390df0911533dd2fc552a8765481bf6a93b5d5952a9ddbe9cb64ca3479e17。)

注意

singularity永久缓存使用了一个filelock,它只在以下情况下工作: 多个singularity永久缓存进程在同一个上启动 机器。如果在连接的多台计算机上启动多个进程 对于同一网络文件系统,则可能发生缓存损坏。在

使用

除了singularity-permanent-cache,还将spc作为 安装程序包时的速记。singularity-permanent-cache是 也可以作为独立脚本singularity_permanent_cache.py提供。在

singularity-permant-cache没有依赖项,只需要一个现代 python版本(3.5或更高版本)。在

^{pr2}$

致谢

非常感谢@TMiguelT,@illustional和@vsoch的建设性意见 关于this PR for Cromwell的反馈导致 本程序的开发。在

filelock实现基于py-filelock。 非常感谢@benediktschmitt&contributors为这个filelock示例提供帮助 他们把它公之于众。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java中最小长度的字数计算   java事务处理JavaEE 6   java如何进行5分钟刷新并检查txt是否被修改?   java可以同时拖动多个对象   变量长、双精度、字节、字符在Java中的用途是什么?   spring将XMLBean配置转换为java配置   java检测不可靠网络上的TCP丢失   Java:TCP加密、SSL和Netty   在java中,如何使用isAssignableFrom的映射避免多个if-else   在J2EE动态Web项目中找不到java CSS文件   java遍历领域查询到RealmList   安卓阅读网站内容Java   java如何修改/自定义/反编译Opera mini jar文件?   java死锁播放框架如何使用控制器中的参数检查@RestrictedResource?   java在MS Excel中导入xml文件我们如何使用Python或任何其他编程语言自动化此流程?   java如何暂停正在运行的线程并在需要时重新启动同一线程?