[C++] 300 FLTK : ChatGPTアプリの製作 その29 タイムアウト設定

[M1 Mac, Monterey 12.6.3, clang 13.0.0, FLTK 1.3.8, ChatGPT API(gpt-3.5-turbo), NO IDE]

一昨日日曜あたりからChatGPT APIに質問しても反応しないケースがかなり増えました。

curl sessionにおいてタイムアウト時間を120秒に設定して対応しました。

いよいよパンク状態に差し掛かっているものと思われます。

// Set up a curl session
    CURL* curl = curl_easy_init();
    if (curl) {
        // Set the request options
        curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, requestData.c_str());
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &responseData);

        // Set timeout options
        curl_easy_setopt(curl, CURLOPT_TIMEOUT, 120L); // 120秒でタイムアウト
        curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 120L);

        // Send the request
        CURLcode res = curl_easy_perform(curl);
        if (res != CURLE_OK) {
            cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << endl;

            Fl_Text_Buffer* bufferError = new Fl_Text_Buffer();
            bufferError -> text(curl_easy_strerror(res));
            noticeDisplay -> buffer(bufferError);
            noticeDisplay -> wrap_mode(Fl_Text_Display::WRAP_AT_BOUNDS, 5);

            return {};
        }

        // Clean up
        curl_easy_cleanup(curl);

    } else {
        cerr << "curl_easy_init() failed" << endl;

        const char* error = "curl_easy_init() failed";
        Fl_Text_Buffer* bufferError = new Fl_Text_Buffer();
        bufferError -> text(error);
        noticeDisplay -> buffer(bufferError);
        noticeDisplay -> wrap_mode(Fl_Text_Display::WRAP_AT_BOUNDS, 5);

        return {};
    }