2012-04-04 26 views
6

Tôi đã tạo một tập hợp các trình diễn của máy chủ TCP tuy nhiên các ví dụ điển hình của tôi chậm hơn đáng kể. Tôi thực sự không thử nghiệm hiệu suất nhưng tại thời điểm này một cái gì đó đang làm cho phiên bản gevent 5 lần chậm hơn.gllent urllib là chậm

Tôi chắc chắn phải là cách tôi biên soạn gevent nhưng không thể giải quyết được vấn đề. Tôi đang sử dụng OSX báo sử dụng fink biên dịch python 2,6 và 2,7. Tôi đã thử cả gevent ổn định và gevent 1.0b1 và nó hoạt động giống nhau. Tiếng vang mất 5 giây để trả lời, trong đó các ví dụ khác lấy < 1 giây. Nếu tôi xóa cuộc gọi urllib thì vấn đề sẽ biến mất.

Tôi đặt tất cả các mã trong https://github.com/djay/geventechodemo

Để chạy các ví dụ tôi đang sử dụng zc.buildout như vậy để xây dựng

$ python2.7 bootstrap.py 
$ bin/buildout 

Để chạy các ví dụ gevent:

$ bin/py geventecho3.py & 
[1] 80790 
waiting for connection... 
$ telnet localhost 8080 
Trying 127.0.0.1... 
...connected from: ('127.0.0.1', 56588) 
Connected to localhost. 
Escape character is '^]'. 
hello 
echo: avast 

này sẽ mất 3-4 giây để trả lời trên hệ thống của tôi.

Tuy nhiên ví dụ ren

$ bin/py threadecho2.py 

hoặc ví dụ xoắn

$ bin/py twistedecho2.py 

là ít hơn 1s. Bất kỳ ý tưởng những gì tôi đang làm sai?

+0

Nó có vẻ phụ thuộc vào mạng nội bộ của tôi. Tại nhà của tôi grepent urlib gọi là chậm so với bình thường urlib, nhưng tại văn phòng họ đều có cùng một tốc độ. Rất lạ. – djay

Trả lời

1

Câu trả lời đã thay đổi trình phân giải DNS mặc định đang được sử dụng như được nêu trong cuộc trò chuyện này.

https://groups.google.com/forum/#!topic/gevent/5uNfkdgzWVc

thiết GEVENT_RESOLVER = chủ đề đã làm cho nó làm việc như tốc độ dự kiến ​​

0

Chỉ cần thử trên Windows XP. Không phản hồi ngay lập tức, nhưng nhanh hơn 3 giây. Sẽ giả lập một khách hàng để đo thời gian chính xác.

PS Xây dựng sự băn khoăn trên Windows không hoàn hảo! Đã phải chơi với bao gồm và sửa chữa một lỗi trong mã thực tế. Tôi sẽ gắn bó với Linux vì libevent/Gevent trong tương lai;)

0

urllib không hỗ trợ tái sử dụng kết nối http 1.1. Mỗi khi bạn nhận được trang, nó tạo ra một kết nối TCP mới và bắt tay TCP mới. urllib là và luôn luôn sẽ chậm có hoặc không có gevent.

+0

nếu bạn nhìn vào mã được cung cấp bạn sẽ nhận thấy tôi đã so sánh urllib trong cả hai trường hợp vì vậy đây không phải là nguyên nhân. – djay

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