Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python: Сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
dimoncraft
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 54
1

Клиент-серверное приложение на Python - общие моменты (дипломная работа)

12.01.2018, 20:52. Просмотров 1103. Ответов 8
Метки нет (Все метки)

Здравствуйте, форумчане!
Заранее спасибо всем тем, кто не прошёл мимо!
Итак, приступим.
Тема моего диплома:"Разработка метода разделения потоков данных для передачи файлов от пользователя на суперкомпьютер с учетом приоритетов".

В общем и целом говоря, мне нужно написать отдельно сервер на Python и отдельно клиент на Python, затем разработать метод(способ организации) передачи файлов между ними. Естественно, клиентов может быть много. Один клиент может закачивать\скачивать одновременно несколько файлов. Требуется реализовать систему приоритетов, которая будет задаваться пользователем. То есть, чтобы пользователь мог влиять на то, как разбивается весь поток данных.
Так же, специфика задачи в том, что файлы могут быть очень больших размеров, вплоть до нескольких десятков террабайт. Это требует того, чтобы при прекращении передачи файла и её последующем возобновлении она начиналась с того же места, на котором была прервана.

Коротко ответы:
Почему Python? - желание научного руководителя
Сам что-то когда-то кодил? - да, кодил на С, С++, С#, PHP, но пока не работал. Чисто для себя в течение двух лет.
Python знаешь? - не знаю совсем
Сколько есть времени? - два с половиной месяца.

Господа, я не сталкивался с Python, но науч. рук. сказал работу сервера сделать на основе асинхронных вызовов, то есть не плодить процессы и потоки для клиентов, а использовать select, poll или epoll. Сложно ли это реализовать, если первый раз вообще слышишь об этом?
Где вообще толково можно почитать о серверах на Python? Может у кого-то есть наработки какие-то? Может кто-то этим занимался и может помогать иногда с кодингом (возможно смогу финансово отвечать на это)?
Я подумал, над организацией всего этого дела и пока что не очень понимаю, как можно реализовать эту полностью функционирующую систему. Нужно делать декомпозицию, но я даже не знаю с чего начать её проектировать.

В общем подскажите пожалуйста, направьте, сориентируйте кто как может.
Заранее, ещё раз спасибо всем!

Добавлено через 24 минуты
Забыл. 80% того, что необходимо использовать epoll.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2018, 20:52
Ответы с готовыми решениями:

Python 3, клиент-серверное приложение с GUI
Добрый день. По заданию мне необходимо организовать клиент-серверное...

Клиент-серверное приложение (работа только на одной машине)
Здравствуйте. Возник такой вопрос по написанию простого приложения (Android)....

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

Клиент-серверное приложение: как определить, что сервер/клиент не отвечает в течении определенного времени
Пишу клиент-серверное приложение. Использую TCPListener и TCPClient. Вопрос:...

Клиент-серверное приложение
Создание клиент-серверное приложение консоли для просмотра файлов и каталогов...

8
Zedta
74 / 74 / 38
Регистрация: 30.11.2017
Сообщений: 179
12.01.2018, 21:10 2
В гугле python epoll, там и статьи и примеры серверов с epoll на github
0
alex925
2675 / 2281 / 631
Регистрация: 19.03.2012
Сообщений: 8,831
12.01.2018, 21:36 3
Цитата Сообщение от dimoncraft Посмотреть сообщение
а использовать select, poll или epoll.
Это низкоуровневое программирование, таким в python ты заниматься не будешь, уже есть куча готовых фреймворков для написания асинхронного кода. Наиболее актуальные на данный момент это: asyncio, tornado. Есть ещё twisted, но он старый и моструозный (но если найдешь, что-то готовое или дающее большой толчок, бери его).
1
vic5710
279 / 187 / 114
Регистрация: 10.12.2016
Сообщений: 616
13.01.2018, 02:21 4
https://github.com/aio-libs/aioftp
https://github.com/giampaolo/pyftpdlib - мне больше понравилось
насчет докачки и приоритета - можно простую БД сделать - sqlite3 в питон встроено
1
dimoncraft
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 54
14.01.2018, 12:51  [ТС] 5
Цитата Сообщение от alex925 Посмотреть сообщение
Это низкоуровневое программирование, таким в python ты заниматься не будешь, уже есть куча готовых фреймворков для написания асинхронного кода. Наиболее актуальные на данный момент это: asyncio, tornado. Есть ещё twisted, но он старый и моструозный (но если найдешь, что-то готовое или дающее большой толчок, бери его).
__________________
А подскажите пожалуйста, в asyncio библиотеке присутствует блок для работы с epoll?
Я просто по верхам пробежался в Интернете и не нашёл конкретно, как в asyncio работать с epoll.
Сейчас решил в ближайшее время выучить и понять синтаксис программирования на python, а затем разбираться уже конкретно с данным фреймворком, а то часто не понимаю синтаксических конструкций в примерах из Интернета.
Может можете ещё что-то посоветовать для быстрого освоения этого языка?
Спасибо!
0
alex925
2675 / 2281 / 631
Регистрация: 19.03.2012
Сообщений: 8,831
14.01.2018, 19:24 6
dimoncraft, все перечисленные мной фреймворки у себя внутри используют системные вызовы (epoll и т д), тебе не нужно делать эти вызовы вручную.

По поводу материала для обучения, не могу ничего конкретного предложить, я всему учился собирая кучу статей из сети.

Непонятные конструкции закидывай сюда, обьясню что к чему.
0
vic5710
279 / 187 / 114
Регистрация: 10.12.2016
Сообщений: 616
14.01.2018, 22:32 7
Цитата Сообщение от dimoncraft Посмотреть сообщение
блок для работы с epoll
https://habrahabr.ru/post/121103/
но это тебе надо если будешь делать сам сервер/клиент на сокетах
https://docs.python.org/3.4/library/socketserver.html
0
dimoncraft
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 54
20.01.2018, 19:40  [ТС] 8
Цитата Сообщение от vic5710 Посмотреть сообщение
https://habrahabr.ru/post/121103/
но это тебе надо если будешь делать сам сервер/клиент на сокетах
https://docs.python.org/3.4/library/socketserver.html
Спасибо! Хабр - первая ссылка, она первая в гугле вылезает на запрос epoll linux python. Эту статью я уже изучил на 80%. Дальше начались трудности. Скажите пожалуйста, стоит ли начинать писать сервер таким образом, как это сделано на хабре (по ссылке выше)? То есть самому работать с epoll, сокетами и прочим? Или стоит прислушаться к alex925 и вдаться глубже в библиотеку asyncio?

Я просто сейчас запутался немного. Пролейте пожалуйста свет на это всё. На хабре представлены элементарные примеры, в которых используются две библиотеки: select(из него берём epoll) и socket(ну понятно, сокеты). Так вот, можно вдаваться и "химичить" это таким способом, как на хабре. Но как по мне - это правда похоже на что-то низкоуровневое, что добавит излишнюю сложность разработке. Это первый вариант.
На сколько я понял, второй вариант - использовать библиотеку asyncio или tornado. Эти библиотеки на уровень выше (надстройки), чем библиотекой select. Возможно, я ошибаюсь, поправьте, если да. Если же я прав, то правильно ли я думаю, что лучше использовать их для разработки?
Третий вариант - изучать чужие сервера и их доводить под свои нужды.
Цитата Сообщение от vic5710 Посмотреть сообщение
https://github.com/aio-libs/aioftp
https://github.com/giampaolo/pyftpdlib - мне больше понравилось
насчет докачки и приоритета - можно простую БД сделать - sqlite3 в питон встроено
Я конечно снова могу ошибаться, но открыв эти две ссылки и открыв код я понял, что его там очень много и я в нём сильно потерялся, и подумал, что это гиблое дело. Но, повторюсь, возможно я неправ и это самый лучший вариант.

Скажите пожалуйста, как целесообразнее всего поступить? Заранее спасибо!
0
vic5710
279 / 187 / 114
Регистрация: 10.12.2016
Сообщений: 616
21.01.2018, 16:24 9
не надо тебе лезть в epoll, изучи asyncio/await http://itscreen.tk/blog/25-python-3-intro-v-asyncio/
есть же простой пример - getting started
http://aioftp.readthedocs.io/
что не ясно в нем?

Добавлено через 59 минут
можешь и на tornado сделать тут
интересная статья и тут
0
21.01.2018, 16:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2018, 16:24

Клиент серверное приложение
Ребят вообщем нужно написать клиент серверное приложение в консоле. Как писать...

Клиент-серверное приложение
Всем доброго времени суток! Задание: Разработать программу на языке JavaК,...

Клиент-серверное приложение
Использую простой найденный сервер. Там есть строка принимающая данные:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru