Advertisement
Guest User

Perl Net::Async::HTTP concurrent

a guest
Mar 25th, 2017
324
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 6.69 KB | None | 0 0
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use utf8;
  5. use Devel::Timer;
  6. use HTTP::Request;
  7. use IO::Async::Loop;
  8. use Net::Async::HTTP;
  9. #use IO::Socket qw(IPTOS_LOWDELAY);
  10. use Future::Utils qw(fmap_void);
  11.  
  12. #settings
  13. use constant passwd => 'ultramegahypapassword';
  14. use constant agent => 'supa agent dev.alpha';
  15. use constant timeout => 10;
  16. use constant slots => 10;
  17. use constant debug => 1;
  18. use constant picsize => 50;
  19.  
  20. my @qids;
  21. my @xmlz;
  22.  
  23. my @urlz = (
  24. 'http://testpodarki.afghanet/api/products/4577',
  25. 'http://testpodarki.afghanet/api/products/4653',
  26. 'http://testpodarki.afghanet/api/products/4652',
  27. 'http://testpodarki.afghanet/api/products/4571',
  28. 'http://testpodarki.afghanet/api/products/4572',
  29. 'http://testpodarki.afghanet/api/products/4666',
  30. 'http://testpodarki.afghanet/api/products/4576',
  31. 'http://testpodarki.afghanet/api/products/4574',
  32. 'http://testpodarki.afghanet/api/products/4651',
  33. 'http://testpodarki.afghanet/api/stock_availables/?display=full&filter[id_product]=[3294]',
  34. 'http://testpodarki.afghanet/api/specific_prices/?display=full&filter[id_product]=[3294]',
  35. 'http://testpodarki.afghanet/api/combinations/?display=full&filter[id_product]=[4577]',
  36. 'http://testpodarki.afghanet/api/stock_availables/?display=full&filter[id_product]=[4577]',
  37. 'http://testpodarki.afghanet/api/specific_prices/?display=full&filter[id_product]=[4577]',
  38. 'http://testpodarki.afghanet/api/product_option_values/188',
  39. 'http://testpodarki.afghanet/api/product_option_values/191',
  40. 'http://testpodarki.afghanet/api/product_option_values/187',
  41. 'http://testpodarki.afghanet/api/product_option_values/190',
  42. 'http://testpodarki.afghanet/api/product_option_values/189',
  43. 'http://testpodarki.afghanet/api/stock_availables/?display=full&filter[id_product]=[4653]',
  44. 'http://testpodarki.afghanet/api/specific_prices/?display=full&filter[id_product]=[4653]',
  45. 'http://testpodarki.afghanet/api/images/products/4577/12176',
  46. 'http://testpodarki.afghanet/api/stock_availables/?display=full&filter[id_product]=[4652]',
  47. 'http://testpodarki.afghanet/api/specific_prices/?display=full&filter[id_product]=[4652]',
  48. 'http://testpodarki.afghanet/api/images/products/4653/12390',
  49. 'http://testpodarki.afghanet/api/combinations/?display=full&filter[id_product]=[4571]',
  50. 'http://testpodarki.afghanet/api/stock_availables/?display=full&filter[id_product]=[4571]',
  51. 'http://testpodarki.afghanet/api/specific_prices/?display=full&filter[id_product]=[4571]',
  52. 'http://testpodarki.afghanet/api/images/products/4652/12388',
  53. 'http://testpodarki.afghanet/api/product_option_values/175',
  54. 'http://testpodarki.afghanet/api/product_option_values/178',
  55. 'http://testpodarki.afghanet/api/product_option_values/179',
  56. 'http://testpodarki.afghanet/api/product_option_values/180',
  57. 'http://testpodarki.afghanet/api/product_option_values/181',
  58. 'http://testpodarki.afghanet/api/images/products/3294/8965',
  59. 'http://testpodarki.afghanet/api/product_option_values/176',
  60. 'http://testpodarki.afghanet/api/product_option_values/177',
  61. 'http://testpodarki.afghanet/api/combinations/?display=full&filter[id_product]=[4572]',
  62. 'http://testpodarki.afghanet/api/stock_availables/?display=full&filter[id_product]=[4572]',
  63. 'http://testpodarki.afghanet/api/specific_prices/?display=full&filter[id_product]=[4572]',
  64. 'http://testpodarki.afghanet/api/product_option_values/176',
  65. 'http://testpodarki.afghanet/api/product_option_values/181',
  66. 'http://testpodarki.afghanet/api/product_option_values/180',
  67. 'http://testpodarki.afghanet/api/images/products/4571/12159',
  68. 'http://testpodarki.afghanet/api/product_option_values/177',
  69. 'http://testpodarki.afghanet/api/product_option_values/179',
  70. 'http://testpodarki.afghanet/api/product_option_values/175',
  71. 'http://testpodarki.afghanet/api/product_option_values/178',
  72. 'http://testpodarki.afghanet/api/stock_availables/?display=full&filter[id_product]=[4666]',
  73. 'http://testpodarki.afghanet/api/combinations/?display=full&filter[id_product]=[4576]',
  74. 'http://testpodarki.afghanet/api/specific_prices/?display=full&filter[id_product]=[4666]',
  75. 'http://testpodarki.afghanet/api/stock_availables/?display=full&filter[id_product]=[4576]',
  76. 'http://testpodarki.afghanet/api/specific_prices/?display=full&filter[id_product]=[4576]',
  77. 'http://testpodarki.afghanet/api/images/products/4572/12168',
  78. 'http://testpodarki.afghanet/api/product_option_values/185',
  79. 'http://testpodarki.afghanet/api/product_option_values/182',
  80. 'http://testpodarki.afghanet/api/product_option_values/184',
  81. 'http://testpodarki.afghanet/api/product_option_values/183',
  82. 'http://testpodarki.afghanet/api/product_option_values/186',
  83. 'http://testpodarki.afghanet/api/images/products/4666/12413',
  84. 'http://testpodarki.afghanet/api/combinations/?display=full&filter[id_product]=[4574]',
  85. 'http://testpodarki.afghanet/api/stock_availables/?display=full&filter[id_product]=[4574]',
  86. 'http://testpodarki.afghanet/api/specific_prices/?display=full&filter[id_product]=[4574]',
  87. 'http://testpodarki.afghanet/api/product_option_values/177',
  88. 'http://testpodarki.afghanet/api/product_option_values/181',
  89. 'http://testpodarki.afghanet/api/images/products/4576/12174',
  90. 'http://testpodarki.afghanet/api/product_option_values/176',
  91. 'http://testpodarki.afghanet/api/product_option_values/180',
  92. 'http://testpodarki.afghanet/api/product_option_values/179',
  93. 'http://testpodarki.afghanet/api/product_option_values/175',
  94. 'http://testpodarki.afghanet/api/product_option_values/178',
  95. 'http://testpodarki.afghanet/api/specific_prices/?display=full&filter[id_product]=[4651]',
  96. 'http://testpodarki.afghanet/api/images/products/4574/12171',
  97. 'http://testpodarki.afghanet/api/stock_availables/?display=full&filter[id_product]=[4651]',
  98. 'http://testpodarki.afghanet/api/images/products/4651/12387'
  99. );
  100.  
  101. my %responses;
  102. my %paramz = (user => passwd, pass => '');
  103.  
  104. my $timer = Devel::Timer->new();
  105.  
  106. my $loop = IO::Async::Loop->new();
  107.  
  108. my $http = Net::Async::HTTP->new(user_agent => agent, timeout => timeout, max_connections_per_host => 0, pipeline => 0, ip_tos => 0x10);
  109. $loop->add( $http );
  110.  
  111. $timer->mark('created all shit');
  112.  
  113. my $future = fmap_void {
  114.     (my  $url ) = @_;
  115.     my $request = HTTP::Request->new(GET => $url);
  116.     $request->header(User_Agent => agent);
  117.     $request->authorization_basic(passwd,'');
  118.     $http->do_request( request => $request )
  119.          ->on_done( sub {
  120.             $timer->mark('gotta responze @'.$url.'!');
  121.             my $response = shift;
  122.             $responses{$url}=$response;
  123.             print "$url succeeded: ".$response->code;
  124.             print "  Content-Type:".$response->content_type."\n";
  125.          } )
  126.          ->on_fail( sub {
  127.             my $failure = shift;
  128.             print "$url failed: $failure\n";
  129.          } );
  130. } foreach => \@urlz;
  131.  
  132. $timer->mark('after foreach');
  133.  
  134. $loop->await( $future );
  135.  
  136. $timer->report();
  137. print "\n\n";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement