0
正如本主題中所述,在Django應用程序中使用的python中的socket.recv()未按預期工作。當我在IDLE執行以下操作的命令/ IPython的提示下,所有數據被從所述服務器接收:Django應用程序中的socket.recv()無法正常工作
import socket
s = socket.socket()
s.connect((host,port))
s.setblocking(0)
s.send("<some commands">)
data = ""
while True:
try:
new=s.recv(256)
if not new: break
data+=new
except:
break
從while循環破後,數據變量具有所有所接收的數據。 現在,當我把這個在我的Django應用程序像這樣的views.py:
s = _sendQuery(host, port)
data = s._receiveAll(s)
def _sendQuery(host, port):
sock = None
try:
sock = socket.socket()
sock.connect((host, port))
sock.setblocking(0)
sock.send("<some commands>")
finally:
return sock
def _receiveAll(sock):
data = ""
while True:
try:
temp = sock.recv(256)
if not temp: break
data+=temp
except Exception, ex:
data+=ex
return data.strip()
現在,當我打電話通過瀏覽器的應用程序,它會返回異常消息:
[錯誤11]資源暫時不可用
它告訴我,在第一次調用sock.recv(256)時,它已經遇到一個異常(與sock.setblocking(0)有關),這就是爲什麼可變數據是個例外僅限年齡。
任何人有一個想法如何解決這個問題?我很困難。 在此先感謝!