Ciao @andrewtkarl , Grazie per il tuo suggerimento! Abbiamo acquisito la tua richiesta e la prenderemo in considerazione.
@andrewtkarl , lo sviluppatore ha condiviso questo:
Attualmente un utente può scrivere uno script utilizzando HTTP Request con Send(asnyc) che restituirà una promessa JSL. Possono tenere traccia del numero di promesse, che saranno le connessioni simultanee.
Quando una promessa è terminata (con onResult o onError) possono accodare più richieste.
Ecco un esempio di gestione del numero massimo di richieste HTTP simultanee utilizzando la richiesta HTTP e le promesse JSL condivise da @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 , fa @bryan_boone la risposta di soddisfa questa richiesta?
@mia_stephens Sì, grazie a entrambi per il vostro aiuto.
grazie per la conferma @andrewtkarl .Segnerà questo come consegnato.
per limitare il numero di chiamate HTTP simultanee.
Qualcosa come questo
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 );
);