發表文章

目前顯示的是有「python」標籤的文章

Python HTTP requests - The first sight

Python http library requests 是個簡單直覺又普及的library,即便如此他也提供進階的use cases. hooks 可以預先自行調整,決定request處理的項目或事件。通常搭配callback function,例如回傳時印出url, 可以先建立一個 def print_url(r, *args, **kwargs):     print(r.url) Call 的時候放在hooks 這dictionary中,就會在request後,接著執行到print_url這個function >>> requests.get('https://httpbin.org/', hooks={'response': print_url}) 實際上hook的概念並非Python獨有,hook function 像是一個interface讓開發者去複寫,客製化自己要的操作。 timeouts 自定義timeout 時間來確保回應的時間是符合自己預期,但每次都自己加參數容易忘記。 requests.get('https://google.com/', timeout=0.001) Retry 可以利用 HTTPAdapter (request.adapters) 跟Retry (requests.packages.urllib3.util.retry) 去搭配,不僅可以定義max retry的次數,也能只針對return code以及method的型態來做失敗時的retry retry_strategy = Retry(     total=3,     status_forcelist=[429, 500, 502, 503, 504],     method_whitelist=["HEAD", "GET", "OPTIONS"] ) adapter = HTTPAdapter(max_retries=retry_strategy) http = requests.Session() http.mount("https://", adapter) response = http.get("htt...

如何在MacOS 中自由切換不同Python版本 - pyenv + virtualenv

  https://stackoverflow.com/questions/48470540/how-to-work-with-pyenv-virtualenv-and-pipenv 假設要不同資料夾、不同專案設定不同的python版本,可以由以下兩中方式達成 pyenv + virtualenv pyenv + pipenv 此篇介紹第一種方式pyenv 與virtualenv的組合,相對簡單明瞭。 mac os terminal操作步驟 更新pip sudo pip3 install --upgrade pip 用homebrew安裝pyenv-virtualenv (會一併的安裝這兩者與他們的dependency) brew install pyenv-virtualenv  安裝指定版本於本機,在此用python 3.7.7為例 pyenv install 3.7.7 以 python 3.7.7為版本,建立一個名為 venv377的虛擬環境 pyenv virtualenv 3.7.7 venv377 切換到專案的資料夾下 cd project_101 將預設的python版本使用venv377這個環境 pyenv local venv377 *pyenv 有三種scope: global, local, shell,顧名思義就是修改系統python、當前目錄python、以及目前登入terminal的shell ** 若是遇到Failed to activate virtualenv,是因為啟動shell時沒有加上pyenv, virtualenv 的init,please check "add script in .zshrc" 所以說,有兩個方法可以切換python版本 在virtualenv去指定某個版本 就要在該目錄下第6步 - pyenv local project_py377 這樣就會在該目錄下生成 .python-version 裡面就會寫用什麼環境的python e.g.: venv377 在任何folder下指定某個版本 就直接下 pyenv activate venv377, 即可用python3.7.7 source deactivate就能脫逃 add script in .zshrc $ echo '...