um die Anzahl gleichzeitiger HTTP-Aufrufe zu begrenzen.
Etwas wie das
custom_multi_http = Function( {mm, max = 30},
//mm=multi_http_requests;
//max=5;
res = {};
status = {};
mm_get = mm << get requests;
chunks = Ceiling( N Items( mm_get ) / max );
chunk_list = {};
For( i = 1, i <= chunks, i++,
chunk_i = New Multi HTTP Request();
For( j = 1 + (i - 1) * max, j <= Min( max * i, N Items( mm_get ) ), j++,
chunk_i << Add( mm_get[j] )
);
Wait( 0 );
chunk_i_requests = chunk_i << get requests;
Insert Into( res, chunk_i << Send() );
Insert Into( status, chunk_i_requests << get status() );
);
Return( res, status );
);Hi @andrewtkarl , Danke für deinen Vorschlag! Wir haben Ihre Anfrage erfasst und werden sie berücksichtigen.
@andrewtkarl , teilte der Entwickler dies mit:
Derzeit kann ein Benutzer ein Skript schreiben, das eine HTTP-Anforderung mit Send(asnyc) verwendet, das ein JSL-Versprechen zurückgibt. Sie können die Anzahl der Zusagen verfolgen, die die gleichzeitigen Verbindungen darstellen.
Wenn ein Promise beendet ist (mit onResult oder onError), können sie weitere Anfragen in die Warteschlange stellen.
Hier ist ein Beispiel für die Verarbeitung der maximalen gleichzeitigen HTTP-Anforderungen mithilfe von HTTP-Anforderungen und JSL-Versprechen, die von geteilt werden @bryan_boone :
Names Default To Here( 1 );
//populate the requests
requests = {};
promises = {};
count = 100;
max = 30;
For(i = 1, i <= count, i++,
request = New HTTP Request( //this is the HTTP Request for the Query String Example in the SI
url( "http://httpbin.org/get" ),
Method( "GET" ),
Query String( [["username" => "bob", "address" => "12345", "count"=>i]] )
);
InsertInto(requests, request);
);
//now send them async
process_result = Function( {p, r},
//Show(p);
//Show( r );
if(N Items(promises),
RemoveFrom(promises, 1);
);
);
process_error = Function( {p, e, t},
//Show(p);
//Show( e );
//Show( t );
if(N Items(promises),
RemoveFrom(promises, 1);
);
);
while(N Items(requests),
count = max - N Items(promises);
if(count > N Items(requests),
count = N Items(requests);
);
Show(count);
For(i = 1, i <= count, i++,
request = requests[1];
RemoveFrom(requests, 1);
promise = request << Send( "async" );
InsertInto(promises, promise);
promise << On Result( process_result );
promise << On Error( process_error );
);
If(Nitems(promises),
wait(0);
);
);
//catch any stragglers
while(Nitems(promises),
wait(0);
);
Write("\!nDone!!!\!n");@andrewtkarl , tut @bryan_boone erfüllt die Antwort von diese Anfrage?
@mia_stephens Ja, danke euch beiden für eure Hilfe.
Danke für die Bestätigung @andrewtkarl .Werde es als zugestellt markieren.