WhyPik DocsVề trang chính

Lập trình viên / Tra cứu

Gọi HTTPS và dịch vụ bên ngoài

Gọi API AI, gửi email qua API và tải dữ liệu bằng HTTPS trong Mini Server.

Giao thức và địa chỉ được hỗ trợ

Mini Server hỗ trợ HTTPS tới địa chỉ công khai trên cổng 443 trong khi chạy handler. requests, httpx và httpx2 dùng cấu hình proxy do runtime cung cấp. Các SDK dùng những transport này, như OpenAI, Anthropic và Google GenAI, có thể gọi API của nhà cung cấp bằng khóa của bạn. Với Google Vision, chọn transport="rest".

Không sửa các biến HTTP_PROXY, HTTPS_PROXY, ALL_PROXY hoặc NO_PROXY của runtime, không đặt trust_env=False và không bỏ xác minh chứng chỉ. Proxy chuyển tiếp kết nối TLS; thư viện khách xác minh chứng chỉ và tên máy chủ. WhyPik không giải mã TLS của ứng dụng.

HTTP, SMTP, socket trực tiếp, kết nối Database bên ngoài, IP riêng, loopback, link-local, metadata và mạng nội bộ bị chặn. Gửi email hoặc tin nhắn bằng HTTPS API của nhà cung cấp. Mỗi đích redirect cũng phải vượt qua kiểm tra địa chỉ; tên miền có kết quả DNS lẫn IP công khai và IP riêng bị từ chối.

Thử một request không cần API key

Lưu vào server.py, chạy whypik run rồi mở /api/https-check. Sau khi deploy backend thử nghiệm, gọi lại endpoint đó để kiểm tra mạng trong sandbox. Ví dụ chỉ gọi địa chỉ cố định; không nhận URL tùy ý từ người dùng.

python
import requests
from whypik import api

@api.get("/https-check")
async def https_check(request):
    with requests.get("https://example.com/", timeout=10) as response:
        response.raise_for_status()
        return {"upstream_status": response.status_code}

Giới hạn trong một invocation

Đặt timeout của thư viện ngắn hơn thời gian còn lại của invocation, ví dụ 10–15 giây; hạn chế retry để không vượt 60 giây. Khi request kết thúc, hết hạn hoặc bị hủy, các tunnel cũng bị thu hồi. Không có giới hạn mới 60 request/phút; hạn mức request đồng thời và ngân sách tháng vẫn theo gói.

Giới hạn 8 MiB áp dụng cho toàn invocation, gồm cả các lần retry. Phản hồi HTTP từ handler vẫn có giới hạn 1 MiB riêng. API xử lý video, ảnh lớn hoặc công việc kéo dài nên dùng mô hình tạo tác vụ rồi hỏi trạng thái từ dịch vụ bên ngoài.

Giới hạnGiá trị
Thời gian toàn invocationTối đa 60 giây, gồm import, xử lý, chờ API và retry
Dữ liệu qua proxyTối đa 8 MiB cộng cả gửi và nhận, tính cả dữ liệu TLS
Số kết nốiTối đa 16 tunnel TCP; tối đa 4 đang mở cùng lúc
ĐíchHTTPS công khai, cổng 443

Khóa nhà cung cấp và cách đọc lỗi

Thêm khóa vào Mini Server → Variables dưới dạng Bí mật; local dùng .env riêng. Python đọc bằng os.environ["PROVIDER_API_KEY"]. Cài sẵn thư viện không cấp tín dụng hoặc quyền sử dụng của nhà cung cấp. Không trả khóa hoặc exception chứa request/header ra HTTP và không in ra log.

Lỗi 401/403 do nhà cung cấp trả về cần kiểm tra khóa và quyền tài khoản. ProxyError hoặc lỗi CONNECT cần kiểm tra HTTPS, cổng và địa chỉ đích. Lỗi chứng chỉ cần sửa chứng chỉ của dịch vụ, không dùng verify=False. Timeout có thể xảy ra sau khi nhà cung cấp đã nhận thao tác: dùng idempotency key khi API của họ hỗ trợ, không tự gửi lại thao tác thanh toán hoặc gửi tin nhắn khi chưa biết kết quả.

Khác biệt giữa local và runtime

whypik run sử dụng mạng và quyền của máy phát triển; không mô phỏng firewall, sandbox hoặc quota production. whypik runtime install đồng bộ phiên bản thư viện, không biến local thành môi trường cô lập.

Bước kiểm tra deployment không có mạng. Không gọi API bên ngoài khi import module; thực hiện các request trong handler. Runtime không hỗ trợ tiến trình nền tiếp tục chạy sau response.

Sandbox có thể được dùng lại. Tạo client bất đồng bộ trong handler bằng async with; không giữ nó qua event loop của lượt sau. Dù giữ client HTTP đồng bộ, runtime vẫn đóng tunnel khi lượt gọi kết thúc và client phải mở kết nối mới ở lượt tiếp theo.

Trong bài này