![](/img/trans.png)
[英]Python HTTPServer responding to curl but not to Postman GET request
[英]GET request not responding in docker container
我有一個在 docker 容器中運行的fastapi
應用程序,該容器連接到也作為容器運行的 PostgreSQL 數據庫。 我在docker-compose.yml
文件中都有這兩個信息。
在應用程序中,我有一個POST
端點,它使用requests庫從外部 API ( https://restcountries.com/v2/all ) 請求數據。 提取數據后,我試圖將其保存在數據庫中的表中。 當我從 docker 容器觸發端點時,它需要很長時間,並且不會從 API 中提取數據。 但同時,當我在 docker 容器外運行相同的代碼時,它會立即執行並接收數據。
docker-compose.yml
文件:
version: "3.6"
services:
backend-api:
build:
context: .
dockerfile: docker/Dockerfile.api
volumes:
- ./:/srv/recruiting/
command: uvicorn --reload --reload-dir "/srv/recruiting/backend" --host 0.0.0.0 --port 8080 --log-level "debug" "backend.main:app"
ports:
- "8080:8080"
networks:
- backend_network
depends_on:
- postgres
postgres:
image: "postgres:13"
volumes:
- postgres_data:/var/lib/postgresql/data/pgdata:delegated
environment:
- PGDATA=/var/lib/postgresql/data/pgdata
- POSTGRES_PASSWORD=pgpw12
expose:
- "5432"
ports:
- "5432:5432"
networks:
- backend_network
volumes:
postgres_data: {}
networks:
backend_network: {}
發出請求的代碼:
req = requests.get('https://restcountries.com/v2/all')
json_data = req.json()
我錯過了什么或做錯了什么?
我經常在我的 python 容器中使用 python 請求,並且遇到過幾次這個問題。 我還沒有找到合適的解決方案,但重新啟動 Docker Desktop(完全重新啟動它,而不僅僅是重新啟動容器)似乎每次都有效。 我過去發現有幫助的是在調用 HTTP 調用時指定超時時間:
requests.request(method="POST", url=url, json=data, headers=headers, timeout=2)
當服務器在超時時間內沒有發送數據時,會引發異常。 至少您會意識到這個問題,並且會浪費更少的時間來確定何時再次發生這種情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.