WORKER TIMEOUT
có nghĩa là ứng dụng của bạn không thể đáp ứng yêu cầu trong một khoảng thời gian xác định. Bạn có thể thiết lập điều này bằng cách sử dụng cài đặt thời gian chờ gunicorn . Một số ứng dụng cần nhiều thời gian hơn để đáp ứng hơn một ứng dụng khác.
Một điều khác có thể ảnh hưởng đến điều này là chọn loại công nhân
Các nhân viên đồng bộ mặc định cho rằng ứng dụng của bạn bị ràng buộc tài nguyên về CPU và băng thông mạng. Nói chung, điều này có nghĩa là ứng dụng của bạn không nên làm bất cứ điều gì mất một khoảng thời gian không xác định. Một ví dụ về một cái gì đó mất một lượng thời gian không xác định là một yêu cầu với internet. Tại một số điểm, mạng bên ngoài sẽ thất bại theo cách mà các máy khách sẽ chồng chất lên các máy chủ của bạn. Vì vậy, theo nghĩa này, bất kỳ ứng dụng web nào thực hiện các yêu cầu gửi đến API sẽ được hưởng lợi từ một nhân viên không đồng bộ.
Khi tôi gặp vấn đề tương tự như của bạn (Tôi đã cố gắng triển khai ứng dụng của mình bằng Docker Swarm), tôi đã cố gắng tăng thời gian chờ và sử dụng một loại lớp worker khác. Nhưng tất cả đều thất bại.
Và sau đó tôi đột nhiên nhận ra rằng tôi đang giới hạn tài nguyên của mình quá thấp cho dịch vụ bên trong tệp soạn thảo của mình. Đây là điều làm chậm ứng dụng trong trường hợp của tôi
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
Vì vậy, tôi khuyên bạn nên kiểm tra xem điều gì làm chậm ứng dụng của bạn ngay từ đầu
Gunicorn==19.3.1
vàgevent==1.0.1