我需要非常重要的时间(以毫秒为单位),并且需要非常快速地发送post json请求 插座非常快 我通过套接字发送数据,但在等待运行脚本后无响应
代码
import socket
import time
import ssl
start_time1 = time.time()
target_host = "site.com"
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
target_port = 443 # create a socket object
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(( target_host,443 ))
s = context.wrap_socket(s,server_hostname=target_host)
request = "POST /api/send HTTP/1.1\r\nHost:site.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0\r\nCookie: .ASPXAUTH=D6CA254ED2327019933D1746092C47DD2884398658FF3DCAD213B8B9F0F73F7A67BC0C483F316F76195B49BC2C487783F9C73009B3469F1F7BCE6286C6C16A45916A013285E23808DED1C2F8E65262C377923823B538CFCC;\r\n{'IsSymbolCautionAgreement': 'false', 'CautionAgreementSelected': 'false', 'IsSymbolSepahAgreement': 'false', 'SepahAgreementSelected': 'false', 'orderCount': 112, 'orderPrice': 45150, 'FinancialProviderId': '1', 'minimumQuantity': '', 'maxShow': '0', 'orderId': '0', 'isin': 'IRO7NIRP0001', 'orderSide': '65', 'orderValidity': '74', 'orderValiditydate': 'null', 'shortSellIsEnabled': 'false', 'shortSellIncentivePercent': '0'}"
s.send(request.encode())
response = s.recv( 9999 )
s.close()
print request
print response + '\n'
print("--- %s seconds-total ---" % (time.time() - start_time1))
答案 0 :(得分:-1)
由于不了解HTTP的工作原理,导致代码存在多个问题:
Content-length
我需要非常重要的时间(以毫秒为单位),并且需要非常快的发送post json请求套接字的速度非常快
这是使用普通套接字而不是HTTP库的常用但通常错误的原因。开销不在本地代码中,而是在连接建立和数据传输中,即在网络I / O和网络等待时间中。建立的库在保持相关开销方面要比简单地使用套接字做得更好:适当的库可以在同一TCP连接上使用多个HTTP请求,可以使用压缩的内容,可以处理TLS会话恢复等-所有这些都是比性能更重要的是本地执行代码的复杂性。
如果您仍然坚持运行自己的HTTP堆栈,请研究并遵循实际的标准,而不是对HTTP的外观实施自己的想法。