当前位置: 代码网 > it编程>前端脚本>Python > 成功使用devpi搭建PyPI缓存源,建立内网python安装包服务器(通过代理上网)

成功使用devpi搭建PyPI缓存源,建立内网python安装包服务器(通过代理上网)

2024年08月02日 Python 我要评论
缓存源和镜像源的区别:缓存源:初始状态为空。下载请求的软件包没有缓存,则回源到设置的上游镜像源,然后该软件包会被缓存。如果请求的软件包已经被缓存,则直接从本地缓存返回用户。下载速度:第一次速度 = 通过外网从上游镜像源下载的速度;之后的速度 = 内网带宽速度。磁盘空间:少。初始时只保存了软件包索引,随着使用过程,软件包被缓存,磁盘占用逐渐变大。镜像源:初始状态含有所有软件包,并且定时与上游镜像源同步。当下载请求到来时直接返回本地文件。下载速度:内网带宽速度,即使公网断了也能正常下载。

前言

缓存源和镜像源的区别:

缓存源:初始状态为空。下载请求的软件包没有缓存,则回源到设置的上游镜像源,然后该软件包会被缓存。如果请求的软件包已经被缓存,则直接从本地缓存返回用户。

下载速度:第一次速度 = 通过外网从上游镜像源下载的速度;之后的速度 = 内网带宽速度。

磁盘空间:少。初始时只保存了软件包索引,随着使用过程,软件包被缓存,磁盘占用逐渐变大。

镜像源:初始状态含有所有软件包,并且定时与上游镜像源同步。当下载请求到来时直接返回本地文件。

下载速度:内网带宽速度,即使公网断了也能正常下载。

磁盘空间:极大。完整的镜像都是 10tb+ 级别的,当然我们可以选择镜像一个子集。

通过上面的对比,可以发现这两种方案各有优劣。缓存源类似 cdn 缓存,镜像源则相当于全部复制。

pypi:使用 devpi (+ nginx) 搭建缓存源

pypi 选择搭建缓存源的原因是 pypi 的完整库体积过大(目前已经有 16tb,详见 https://pypi.org/stats/),全部镜像一遍成本过高,且平时根本用不到所有软件包,所以选择搭建缓存源。

使用 devpi 搭建 pypi 缓存源

快速配置

devpi 本身是一个 python 软件包,可通过 pip 下载:pip install devpi

安装好后,首先需要初始化。使用 devpi-init --serverdir=[path] 进行初始化,其中 [path] 代表程序的工作目录,配置文件和缓存都储存在这个目录下,因此该目录的储存空间一定要充足。如果不指定这个参数,则工作目录默认在用户目录下:~/.devpi/server

(venv) [devpi@localhost ~]$ devpi-init --serverdir=/home/devpi/data
info  noctx loading node info from /home/devpi/data/.nodeinfo
info  noctx generated uuid: 79ec3310594c4356a948c6da4a2ad6fb
info  noctx wrote nodeinfo to: /home/devpi/data/.nodeinfo
info  noctx db: creating schema
info  [wtx-1] setting password for user 'root'
info  [wtx-1] created user 'root'
info  [wtx-1] created root user
info  [wtx-1] created root/pypi index
info  [wtx-1] fswriter0: committed at 0

初始化后,就可以启动服务器了。使用 devpi-server --host=[host] --port=[port] --serverdir=[path] 启动服务器,其中 [host] 为监听的地址,填写 127.0.0.1 则只有本机能访问,填写 0.0.0.0 则任何主机都能访问,[port] 为监听的端口,[path] 为刚才初始化选择的工作目录。

cat startapp.sh
devpi-server --host=0.0.0.0 --port=8081 --serverdir=/home/devpi/data

(venv) [devpi@localhost ~]$ sh startapp.sh  
2024-07-18 22:32:20,285 info  noctx loading node info from /home/devpi/data/.nodeinfo
2024-07-18 22:32:20,286 info  noctx wrote nodeinfo to: /home/devpi/data/.nodeinfo
2024-07-18 22:32:20,304 info  noctx running with role 'standalone'
2024-07-18 22:32:20,314 warni noctx no secret file provided, creating a new random secret. login tokens issued before are invalid. use --secretfile option to provide a persistent secret. you can create a proper secret with the devpi-gen-secret command.
2024-07-18 22:32:21,864 info  noctx found plugin devpi-web-4.2.2.
2024-07-18 22:32:21,983 info  noctx using /home/devpi/data/.indices for whoosh index files.
2024-07-18 22:32:22,037 info  [asyn
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com