22  Асинхронное выполнение кода

22.1 Рекомендуемая литература

22.2 Цели и задачи

Цель - ознакомиться с особенностями реализации асинхронного программирования в Python

Задача:

  1. Реализовать простой асинхронно работающий сервер с возможностью множественного подключения, который в качестве запросов будет принимать последовательность символов длиной до 20 символов и возвращать ответ: является ли эта последовательность символов - последовательностью ДНК.

    Подсказка

    Используйте готовые примеры из главы 3 книги Asyncio и конкурентное программирование на Python для реализации и тестирования.

22.3 Ход выполнения работы

Внимание

Рекомендуется выполнять код локально с помощью скриптов. Не в Jupyter, так как он сам работает в асинхронном режиме и имеет свой цикл событий.

  1. Реализуйте проверку последовательности символов на проверку последовательности ДНК. Полезным будет модуль biopython, так как по правилам IUPAC в последовательность ДНК могут входить не только A,C,G,T.

  2. Реализуйте эхо-сервер, который ожидает 1 подключение по порту 34561 и развернут на локальном хосте. В случае подключения сервер должен дублировать ввод пользователя. Проверьте работу сервера.

  3. Расширьте функционал этого сервера: добавьте множественность подключений, обеспечьте корректность завершения работы. Вам потребуется асинхронный код, так как один пользователь не должен ждать ощутимо долго, пока закончится задача для другого. Проверьте работу.

  4. Добавьте функционал из п.1 в ваш эхо-сервер. В отчете отразите схему цикла событий для ваших корутин.

22.4 Вопросы к защите

  1. Отличия параллельного и асинхронного программирования

  2. Сокеты и их разновидности, принципы работы

  3. Корутины, определение, особенность синтаксис.

  4. Циклы событий

  5. Селекторы и их влияние на производительность сервера

  6. Задачи и объекты будущего.