June 20, 2016
On Friday, 17 June 2016 at 17:31:55 UTC, ikod wrote:
> On Tuesday, 14 June 2016 at 14:59:37 UTC, Andrei Alexandrescu wrote:
>> On 6/11/16 7:03 PM, ikod wrote:
>>> Hello,
>>>
>>> Dlang-requests is library created under influence of Python-requests,
>>> with primary goal of easy to use and performance.
>>>
> ...
>>
>> Thanks! Does the project have a dub presence? How does it compare feature-wise and speed-wise with curl? -- Andrei
>
> Hello,
>
> Finally, I made some improvements and run minimal performance tests against command-line curl. I wrote simple code for file download using dlang-requests, run it and curl for the same urls(httpbin server on my notebook) and compare "total", "system", and "user" time for different cases. You can find numbers and code below.
> So my conclusion is - performances are comparable for these cases, but there is some field for improvement in dlang-requests.
>
> Case 1 - 50Mb of random data, no any encoding
> Case 2 - 50Mb of random data, transfer chunked
> Case 3 - 50Mb of random data, transfer chunked, content gzip
>
>           measured times, sec
> -----------------------------------------
>      |   user    |   system  |   total
>  Case|-----------|-----------|-----------
>      | d-r | curl|  d-r| curl| d-r | curl
> -----|-----|-----|-----|-----|-----|-----
>   1  | 0.17| 0.14| 0.20| 0.32| 51.7| 52.2
>   2  | 0.19| 0.11| 0.15| 0.21| 51.8| 51.9
>   3  | 0.21| 0.15| 0.11| 0.15| 51.5| 52.1

Finally after all unnecessary memory movements were cleaned up, results for dlang-requests and curl almost equals.

          measured times, sec
 -----------------------------------------
      |   user    |   system  |   total
  Case|-----------|-----------|-----------
      | d-r | curl|  d-r| curl| d-r | curl
 -----|-----|-----|-----|-----|-----|-----
   1  | 0.14| 0.14| 0.15| 0.32| 53.3| 52.2
   2  | 0.13| 0.11| 0.11| 0.21| 51.1| 51.9
   3  | 0.18| 0.15| 0.08| 0.15| 51.2| 52.1

>
>
> import std.stdio;
> import requests;
>
> pragma(lib, "ssl");
> pragma(lib, "crypto");
>
> void main()
> {
>     auto sink = File("/dev/null", "wb");
>     auto rq = Request();
>     rq.useStreaming = true;
>     auto rs = rq.get("http://127.0.0.1:8080/stream-bytes/51200000");
>     auto stream = rs.receiveAsRange();
>     while(!stream.empty) {
>         sink.rawWrite(stream.front);
>         stream.popFront;
>     }
> }


June 22, 2016
On Saturday, 11 June 2016 at 23:03:52 UTC, ikod wrote:
> Hello,
>
> Dlang-requests is library created under influence of Python-requests, with primary goal of easy to use and performance.

I have a couple of questions. If a url can't be found and I catch the ConnectError exception and handle it[2] I still get an additional error[1] printed. For example:

		try
		{
			getContent(url);
		}
		catch(ConnectError ex)
		{
			debug writeln("Error getting page: ", ex.msg);
		}

Will error with this:

[1]2016-06-21T20:59:15.073:streams.d:connect:750 Failed to connect: can't resolve www.systemcontrolpanel.com - getaddrinfo error: Name or service not known

[2]Error getting page: Can't connect to www.systemcontrolpanel.com:80: getaddrinfo error: Name or service not known

The additional error[1] will still print in release build. The only workaround I could find was to check getAddress myself and ensure that the page exists before calling getContent.

Thanks!



June 22, 2016
On Wednesday, 22 June 2016 at 02:04:25 UTC, Zekereth wrote:
> On Saturday, 11 June 2016 at 23:03:52 UTC, ikod wrote:
>> Hello,
>>
>> Dlang-requests is library created under influence of Python-requests, with primary goal of easy to use and performance.
>
> I have a couple of questions. If a url can't be found and I catch the ConnectError exception and handle it[2] I still get an additional error[1] printed. For example:
>
> 		try
> 		{
> 			getContent(url);
> 		}
> 		catch(ConnectError ex)
> 		{
> 			debug writeln("Error getting page: ", ex.msg);
> 		}
>
> Will error with this:
>
> [1]2016-06-21T20:59:15.073:streams.d:connect:750 Failed to connect: can't resolve www.systemcontrolpanel.com - getaddrinfo error: Name or service not known
>
> [2]Error getting page: Can't connect to www.systemcontrolpanel.com:80: getaddrinfo error: Name or service not known
>
> The additional error[1] will still print in release build. The only workaround I could find was to check getAddress myself and ensure that the page exists before calling getContent.
>
> Thanks!

Hello,

It makes no sense to log error message and throw exception in next line, so I'll remove this error messages from the code.

Thanks for report(but better place it on the github project page so that I can link code changes with bug reports)!

1 2
Next ›   Last »