-
Notifications
You must be signed in to change notification settings - Fork 0
/
ТЗ.txt
44 lines (36 loc) · 3.96 KB
/
ТЗ.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Реализовать реактивный RESTful Web Service “Калькулятор” с использованием Spring WebFlux.
+При вызове сервиса клиент должен передать ему четыре параметра:
+1. Текст JS/Python-функции №1 от 1 параметра Int;
+2. Текст JS/Python-функции №2 от 1 параметра Int;
+3. Количество расчетов, которые необходимо выполнить;
+4. Признак выравнивания ответа (выдавать ответ в упорядоченном CSV-формате, либо выдавать результаты по мере их получения).
Сервис работает следующим образом:
1. По таймеру, через определенный (возможно указать в конфигурации) интервал, запускается итерация расчета;
2. Для каждого существующего в настоящий момент клиентского запроса производится вычисление результатов функции №1 и
функции №2.
Текст функций написан на языке JavaScript либо Python (выбор языка на Ваше усмотрение) и должен вызываться из Вашего
Java сервиса соответствующим образом. В качестве единственного параметра при вызове функций передается порядковый
номер ее вызова, который уникален и отсчитывается для каждого вызова с начала. Синтаксис передачи входного значения
в JS/Python-код и получение результата определите на свое усмотрение;
3. Полученные результаты выдаются клиенту либо по мере вычисления, либо подвергаются выравниванию и выдаются в
упорядоченном виде по мере возможности.
Пример упорядоченной выдачи результатов:
<№ итерации>,
<результат функции 1>,
<время расчета функции 1>,
<кол-во полученных наперед результатов функции 1 (еще не выданных, в связи с медленным расчетом функции 2)>,
<результат функции 2>,
<время расчета функции 2>,
<кол-во полученных наперед результатов функции 2 (еще не выданных, в связи с медленным расчетом функции 1)>
Пример неупорядоченной выдачи результатов:
<№ итерации>,
<номер функции>,
<результат функции>,
<время расчета функции>
При любом режиме выдачи результатов, клиент должен их получать сразу, по мере возможности
(без 100% буферизации полного цикла вычислений на стороне сервиса).
Необходимо предусмотреть возможные исключительные ситуации при выполнении JavaScript/Python кода, а также различное
время выполнения функций (№1 и №2).
Выбор языка для описания функций (JavaScript/Python) на Ваше усмотрение.
Необходима реализация только на одном выбранном Вами языке.
Для проверки реализованного сервиса использовать Swagger.