Open mohamedAlaaK opened 5 years ago
I had the same question and it seems the server hangs at task http_request::extract_json().get().
I met the same issue before, because handle_rest() occupy one thread and http_request::extract_json().get() will request another thread to recieve message, if there is no more thread in pool, it will hang forever.
If i had to wait for some response and perform further steps only after the request is completed, then what to do in that case . Also many cpprest blogs demonstrate to wait on the request object.
Below is my code snippet and it seems to work for first few requests and then hangs. I dnt have access to server side code and seems server side code is there for many years. I am just writing the client side code
pplx::task<web::http::http_response> request_task = client.request(request);
try
{
web_response = request_task.get();
result = true;
}
catch (const std::exception& ex)
{
string_t errorMessage;
ErrorMsg = L"Can't reach the confighub agent. " + utility::conversions::to_string_t(ex.what());
}
catch (...)
{
return result;
}
If i had to wait for some response and perform further steps only after the request is completed, then what to do in that case . Also many cpprest blogs demonstrate to wait on the request object.
Below is my code snippet and it seems to work for first few requests and then hangs and it retrieves after few minutes . I dnt have access to server side code and seems server side code is there for many years. I am just writing the client side code
pplx::task<web::http::http_response> request_task = client.request(request);
try
{
web_response = request_task.get();
result = true;
}
catch (const std::exception& ex)
{
string_t errorMessage;
ErrorMsg = L"Can't reach the confighub agent. " + utility::conversions::to_string_t(ex.what());
}
catch (...)
{
return result;
}
@garethsb can you pls tell you changed the code at client side or server side.
On ubuntu 16.04. I am using http_listener to handle some json requests. threadpool default number of threads is 40 and when i send more than 40 requests at the same time from a curl command the server just hangs forever and doesn't respond to any further requests. I did set the number of threads at the program start to say 100 and now it can handle up to 100 requests at the same time. sending more than 100 will make it hang again.
is there some functionality i am missing here ?
it would be nice if the thread pool is dynamically expandable or some sort of a queue holding requests and threads operate on that queue.