2012-02-14 40 views
10

Tôi có lệnh quản lý Django, tạo hàng nghìn yêu cầu TCP/UDP. Tôi đã sử dụng Gevent để tăng tốc độ này khi tôi đã tái cấu trúc mã của tôi để làm việc như coroutines. Các kết nối ổ cắm không còn chặn nhưng từ những gì tôi đã đọc, các bộ phận của Django vẫn không phải là màu xanh lá cây. (Bằng màu xanh lá cây, ý tôi là sử dụng greenlets.)Làm Django chuyển sang màu xanh lá cây

Bạn có thể cho tôi biết phần nào của Django không phải là màu xanh lục và tôi có thể làm gì để làm cho màu xanh lục không? Có một số phần liên quan đến DB vẫn chặn tôi nghĩ. Có bất kỳ thư viện/bản vá lỗi nào cho Django giúp tôi làm cho màu xanh lục không?

Tôi không quá lo lắng về chu kỳ yêu cầu/phản hồi có màu xanh hay không, Gunicorn có giúp tôi không?

Cảm ơn

Trả lời

10

Trình vá khỉ gevent sẽ vá thư viện chuẩn thành Greenlet thân thiện. Điều này sẽ mất rất nhiều cuộc gọi Django phổ biến.

from gevent import monkey; monkey.patch_all() 

Theo như cơ sở dữ liệu, thông thường các giao diện đang chặn. Nếu bạn sử dụng PostgreSQL nhìn vào psyco_gevent để khỉ vá psycopg2 hợp tác với gevent.

2

gevent sẽ không phải thư viện của bên thứ ba màu xanh lục khi có sử dụng tiện ích mở rộng C hoặc sử dụng thư viện bên thứ ba khác đang sử dụng tiện ích mở rộng C. Nếu thư viện chuẩn được sử dụng gevent có thể khỉ vá chúng.

Một số trình điều khiển cơ sở dữ liệu phụ thuộc vào khóa học thực hiện cơ sở dữ liệu. Chỉ vì bạn sử dụng thư viện xanh lục không có nghĩa là cơ sở dữ liệu của bạn sẽ hoạt động "xanh". Điều này cũng cần phải được gọi trên chính mức cơ sở dữ liệu. Ví dụ, Prosgresql hỗ trợ xử lý lệnh async kể từ phiên bản 2.2.

Ngoài ra, bạn có thể muốn kiểm tra Projects using gevent.

Gunicorn sẽ giúp cuộc sống dễ dàng hơn cho bạn, ít nhất là khi bạn bắt đầu triển khai ứng dụng của mình. Ngoài ra trong quá trình phát triển, tôi sẽ khuyên bạn nên sử dụng gunicorn (với gevent) trên lệnh django runerver bình thường, đơn giản vì nó có thể xử lý các yêu cầu đồng thời nhanh hơn.

Các vấn đề liên quan