Rahatsız edici bir sorunum var. Bu basit sunucu kodu var (diyelim ki):Birkaç istekten sonra wsgiref.simple_server ile garip gecikme/gecikme/gecikme/her ne olursa olsun
#!/usr/bin/env python3
import wsgiref.simple_server
def my_func(env, start_response):
start_response('200 OK', [])
return [''.encode()]
server = wsgiref.simple_server.make_server(
'0.0.0.0',
19891,
my_func,
)
server.serve_forever()
Ancak 5 denemeden (isteklerinin yani yaklaşık% 20) 1 zaman çok-çok yavaş servis edilir.
Exception happened during processing of request from ('192.168.1.100', 3540)
Traceback (most recent call last):
File "/usr/lib/python3.5/socketserver.py", line 313, in _handle_request_noblock
self.process_request(request, client_address)
File "/usr/lib/python3.5/socketserver.py", line 341, in process_request
self.finish_request(request, client_address)
File "/usr/lib/python3.5/socketserver.py", line 354, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python3.5/socketserver.py", line 681, in __init__
self.handle()
File "/usr/lib/python3.5/wsgiref/simple_server.py", line 119, in handle
self.raw_requestline = self.rfile.readline(65537)
File "/usr/lib/python3.5/socket.py", line 575, in readinto
return self._sock.recv_into(b)
KeyboardInterrupt
nasıl bu can sıkıcı şeyi önlemek için bir fikrin var mı: bu büyük gecikme hep aşağıda istisna alıyorum yerinde iken ben sunucu işlemi yarıda zaman? Ya da bu davranışın arkasındaki sebep ne olabilir?
Update1: Ben simple_server.py değiştirerek ile TCP_NODELAY denedi - aşağıdaki gibi> WSGIServer-> server_bind işlevini:
def server_bind(self):
"""Override server_bind to store the server name."""
import socket
self.socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY,1)
HTTPServer.server_bind(self)
self.setup_environ()
Maalesef hiçbir değişiklik :(
Pencerelerde gecikme olmadan çalışır 7 python ile 3.4 32bit –
Python ile eski bir debian makinesinde gecikmeden çalışır 3.2. "Çok çok yavaş" dan ne demek istiyorsun? Saniye? –
Merhaba im rpi2 üzerinde ubuntu arkadaşı python3.5 kullanarak. – vpas