Sử dụng đơn giản app.run()
từ bên trong Flask tạo một máy chủ đồng bộ duy nhất trên một chuỗi có khả năng chỉ phục vụ một khách hàng một lúc. Nó được thiết kế để sử dụng trong các môi trường được kiểm soát với nhu cầu thấp (tức là phát triển, gỡ lỗi) vì lý do chính xác này.
Tạo chủ đề và tự quản lý chúng có thể sẽ không giúp bạn đạt được rất nhiều, bởi vì the Python GIL.
Điều đó nói rằng, bạn vẫn có một số tùy chọn tốt. Gunicorn là một máy chủ WSGI vững chắc, dễ sử dụng, cho phép bạn sinh ra nhiều công nhân (các quy trình riêng biệt, vì vậy không lo lắng về GIL) và thậm chí đi kèm với asynchronous workers. không làm việc một phần của bạn (đặc biệt là với Flask).
Tuy nhiên, thậm chí Gunicorn có lẽ không nên được hiển thị công khai trực tiếp. Trong sản xuất, nó nên được sử dụng phía sau một máy chủ HTTP mạnh mẽ hơn; nginx có xu hướng hoạt động tốt với Gunicorn và Flask.
Nguồn
2013-02-11 16:03:07
Điều gì xảy ra nếu tôi đang xem tối đa 100 người dùng? Tôi có thể chỉ định 'quy trình = 100' và vui vẻ với nó không? Trong trường hợp của tôi, tôi chỉ cần các tệp tĩnh, không có phương thức HTTP Post. Yêu cầu của tôi là, tôi muốn chạy tất cả các chủ đề Flask như là một phần của ứng dụng mẹ, để tất cả chúng có thể chia sẻ các biến. – ATOzTOA
* Chuckles * - @ATOzTOA - không, điều đó có thể là * khá * phản tác dụng (Quy trình tương đối đắt tiền, và trừ khi bạn đang làm rất nhiều công việc trong mỗi yêu cầu không có lý do tại sao 4 hoặc 8 quy trình không nên đủ). Điều đó nói rằng, nếu bạn chỉ hiển thị nội dung tĩnh, bạn sẽ tốt hơn với một máy chủ được tối ưu hóa để làm điều đó (Apache, ngnix, IIS). –
Ngoài ra, bạn không nên thường xuyên chia sẻ các biến trên các yêu cầu - nếu bạn * làm * bạn sẽ cần phải giới hạn bản thân cho một quy trình hoặc sử dụng một số giao tiếp ngoài băng tần (Redis, cơ sở dữ liệu, hệ thống tệp, v.v. .) để mỗi quy trình của bạn được đồng bộ hóa. –