Я использую openAI gym
(который разработан в Python) через http-соединение в C++
, которое доступно в [https://github.com/openai/gym-http-api/tree/master][1]
.Сервер создается путем вызова gym_http_server.py
, который использует Flask
, а код C++
использует libcurl
для публикации и получения результата, который доступен в каталоге cpp-binding
.
Когда я вызываю python-сервер по python3 gym_http_server.py
, скручивание завершается ошибкой: curle_couldnt_connect
после нескольких сотен итераций публикации.Это происходит в функции POST
:
Json::Value POST(const std::string& route, const std::string& post_data)
{
std::string url = "http://" + addr + route;
if (verbose) printf("POST %s\n%s\n", url.c_str(), post_data.c_str());
curl_easy_setopt(h.get(), CURLOPT_URL, url.c_str());
curl_easy_setopt(h.get(), CURLOPT_PORT, port);
std::string answer;
curl_easy_setopt(h.get(), CURLOPT_WRITEDATA, &answer);
curl_easy_setopt(h.get(), CURLOPT_POST, 1);
curl_easy_setopt(h.get(), CURLOPT_POSTFIELDS, post_data.c_str());
curl_easy_setopt(h.get(), CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t)post_data.size());
curl_easy_setopt(h.get(), CURLOPT_HTTPHEADER, headers.get());
CURLcode r = curl_easy_perform(h.get());
if (r)
throw std::runtime_error(curl_error_buf.data());
Json::Value j;
throw_server_error_or_response_code(answer, j);
return j;
}
, которая вызывается в Json::Value ans = client->POST("/v1/envs/" + instance_id + "/step/", act_json.toStyledString());
, все доступно в 'gym_binding.cpp'.
Я также контролировал memory
и cpu
использование обеих сторон python
и C++
, и я мог найти что-то ненормальное.Кроме того, еще одно наблюдение, мне пришлось по какой-то причине перезагрузить сервер, и после этого он работал нормально в течение полутора дней, хотя после этого он снова перестал работать.
Тогда странный момент заключается в том, что когда я вызываю сервер python pudb3 gym_http_server.py
, который является отладчиком python, все работает нормально.Я начал pudb
, чтобы найти возможную проблему с сервером Flask
, и нашел это наблюдение.По-видимому, pudb
медленнее, чем python
(с точки зрения времени процессора для выполнения того же кода), но я не понял причину наблюдения.
Учитывая эту ситуацию, я подумал, что, вероятно, для настройки Flask
доступны некоторые настройки, чтобы он работал с обычным вызовом python3
вместо pudb3
.Я ценю любую помощь или комментарий.