MATLAB Answers

how can I reuse http connection when use webread to avoid server time wait?

12 views (last 30 days)
zwbxyzeng
zwbxyzeng on 30 Jan 2019
Answered: Mohammad Sami on 4 May 2020
I use webread to get data from server. When I do it in parfor mode, it makes the remote server generate many timewait event. The reason is everytime, the webread open a port and request data and close it. The server cannot handle too many close requests at the same time. I want keep the port open to frequently read data from url
how can I reuse http connection when use webread to avoid server time wait?
aa=webread('http://172.16.2.1:5010/DFS/TNode/File?fileName=G0002-1/H02/2018/10/44/38/4a3cc8f1-b48f-40df-96b1-5d1e452fd63c',options);
for example, in python, I can do:
con = http.client.HTTPConnection("172.16.2.1", 5010)
while True:
con.request("GET", "/DFS/TNode/File?fileName=G0002-1/H02/2018/10/44/38/4a3cc8f1-b48f-40df-96b1-5d1e452fd63c", headers={"Connection":" keep-alive"})
result = con.getresponse()
result.read()
print(result.reason, result.getheaders())
and there is no time wait event

  2 Comments

Guofeng
Guofeng on 21 Sep 2019
Have you deal with your problem?I have the same problem but do not konw how to speed the function time.
laroq
laroq on 4 May 2020
Same problem as you. Webread and urlread2 don't support connection reuse. Need a third party tool to feed the data to Matlab.

Sign in to comment.

Answers (1)

Mohammad Sami
Mohammad Sami on 4 May 2020
You will need to rely on java to accomplish this. A simple script to open a network connection and read from it is as follows.
url = java.net.URL(url);
HttpURLConnection = url.openConnection();
%connect_time_out = 60;
%HttpURLConnection.setConnectTimeout(connect_time_out);
httpcode = HttpURLConnection.getResponseCode;
ins = HttpURLConnection.getInputStream();
% copy the input stream into an output. you can directly read the input stream as well
output = java.io.ByteArrayOutputStream();
org.apache.commons.io.IOUtils.copy(ins,output);
output.flush();
string_output = char(output.toString);
output.close();
ins.close();

  0 Comments

Sign in to comment.

Products


Release

R2017b