Я бы добавил столбец состояния в таблицу данных:
ready boolean DEFAULT FALSE
Рабочий процесс будет следующим:
INSERT INTO data (month, value, ready)
VALUES (date_trunc('month', current_timestamp)::date, NULL, FALSE)
ON CONFLICT (month) DO NOTHING;
Если строка вставлена, переходите к обработке значения, затем запустите
UPDATE data SET
value = 42, ready = TRUE
WHERE month = date_trunc('month', current_date)::date;
Если первая инструкция не вставит ни одной строки, запустите
SELECT value, ready
FROM data
WHERE month = date_trunc('month', current_date)::date;
Если ready
истинно, верните данные, если нет, сообщите клиентупожалуйста подождите.