2023-09-28|閱讀時間 ‧ 約 4 分鐘

【💊 Python的解憂錦囊】devpi上傳時…不料卻發生了ConnectionResetError

raw-image

我們在「【💎Python 軍火庫 - devpi】pip install…等太久了嗎🤔? 您需要來點緩存機制」有介紹過pypi套件緩存的架設方式, 那架設好了之後, 我們在下載的部份會有一層快取及代理的前哨站, 但假如我們的套件不在pypi平台時怎麼辦呢? 就像torch的套件就必須仰賴外部的來源如下:

pip3 install torch torchvision torchaudio --index-url <https://download.pytorch.org/whl/cu118>

那為了讓該套件也能夠在我們的緩存伺服器上, 我們通常會用devpi-client幫助我們上傳套件包:

P.S 詳細怎麼用請參考: Quickstart: uploading, testing, pushing releases

devpi upload torch-2.0.0+cu118-cp310-cp310-linux_x86_64.whl

但不幸的卻發生了…

這是為什麼呢? 🕵️‍♂️ 基於追求真相的好奇心, 我們直接來追原始碼:

https://github.com/devpi/devpi/blob/3097fe53f0180331adbc6af0783d2c9f29b66e3e/server/devpi_server/config.py#L154

我們可以看到server端的預設值大約1GB, 而我們要上傳的檔案大小大約是2GB, 因此會被阻擋是合情合理的, 所以我們可以在啟動伺服器的時候這麼做

# 5GB
devpi-server --host=xxx --port=xxx ----max-request-body-size=5368709120

那我們「【💎Python 軍火庫 - devpi】pip install…等太久了嗎🤔? 您需要來點緩存機制」的「entrypoint.sh」就可以這麼做…

...
# DEVPISERVER_REQUEST_BODY_SIZE -> 請在docker-compose.yml加入此環境參數進行配置
exec devpi-server --host="${DEVPISERVER_HOST}" --port="${DEVPISERVER_PORT}" --max-request-body-size="${DEVPISERVER_REQUEST_BODY_SIZE}" $@

此時我們再上傳一次即可成功…

devpi upload torch-2.0.0+cu118-cp310-cp310-linux_x86_64.whl

結語

遇到問題我們不要害怕去解決, 最簡單的方式就是查詢前人的討論, 從中得到有跡可循的線索, 最終不忘的求真相,探索最原始的原始碼所在之處, 我們終將看到一些端倪得到正確的解決方法。

學習軟體開發的路上常常苦於網路資訊爆炸嗎? 教學何其多,但卻遇到無法明確選擇的困境呢? 歡迎加入「🔒 阿Han的軟體心法實戰營」, 這裡不給您冗餘的雜訊, 單刀直入直接送您業界開發重點, 避開選擇障礙的困境, 讓您獲得業界標準的開發起手式, 成為Top 1的頂尖人才。

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.