Skip to content

serafim813/Task_client_server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Task_client_server

Клиент-серверное приложение. Сервер. Занимается приемом и выполнением задач. Выполнение задач производится строго по очереди и по одной за раз, последовательно. Обработка клиентских запросов и выполнение задач должны производиться параллельно. Предоставляет следующий интерфейс:

  1. Получает тип задачи и данные и добавляет задачу в очередь на исполнение. Возвращает идентификатор задачи.
  2. По идентификатору возвращает статус задачи (например: в очереди, выполняется, завершено)
  3. По идентификатору возвращает результат выполнения задачи (предусмотреть что за результатом могут обратиться несколько раз).

Хранение задач (идентификаторов, данных и результатов) между запусками сервера не требуется.

Список задач (тип) предопределен, для имитации длительности задачи добавить указанную задержку во время ее выполнения:

  1. Выполнить разворот строки. (пример -> ремирп). Задержка 2 сек.
  2. Выполнить попарно перестановку четных и нечетных символов в строке ( пример -> рпмире, кот -> окт). Задержка 5 сек.
  3. Выполнить повтор символа в строке согласно его позиции (пример -> прриииммммееееерррррр). Задержка 7 сек.

Клиент. Служит для выполнения запросов к серверу (рекомендуется использовать параметры командной строки). Должен уметь:

  1. Передать данные и тип задачи на сервер, отобразить идентификатор.
  2. Запросить и вывести статус задачи по идентификатору.
  3. Запросить и вывести результат выполнения задачи по идентификатору.
  4. Возможность запуска в режиме (пакетный), когда клиент, получив тип задачи и данные:
    • отдает задачу на выполнение и выводит идентификатор
    • дожидается выполнения задачи (в ходе ожидания можно выводить текущий статус)
    • запрашивает и выводит результат выполнения задачи.
    • может прервать ожидание по ctrl+c

Протокол клиент-серверного взаимодействия на усмотрение разработчика. Библиотеки и фреймворки на усмотрение разработчика, но предпочтительно использовать встроенные средства питона. Версия питона (cpython) и ОС на усмотрение разработчика.

Запуск сервера

Для запуска сервера можно воспользоваться командой :

$ python3 run_server.py

Остановка по команде с клавиатуры ^c.

Клиент

Взаимодействие с сервером может осуществляться через клиент client.py.

Аргументы:

  • --action, -a - запрашиваемое у сервера действие. Возможны следующие варианты:
    • run - запустить задачу
    • result - запросить результат
    • status - запросить статус
  • --data, -d - в зависимости от действия может быть id задачи (при -a [result, status]) либо произвольная строка.
  • -task_name, -n - имя задачи для запуска на сервере (при -a run) (1 - reverse, 2 - permutation, 3 - repeat)
  • --waiting_for_data, -w - ожидания результата выполнения задачи

Пример запуска задачи:

$ python3 client.py -a run -n 1 -d пример -w true
Result of task [1]: ремирп
Status: success

$ python3 client.py -a run -n 1 -d пример
Task [1] added to the queue. Task id is #1
$ python3 client.py -a status -d 1
Status of task #1: success
$ python3 client.py -a result -d 1
Result of task #1: ремирп
Status: success

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages