Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 3
Регистрация: 26.10.2013
Сообщений: 133
1

Сервер на питоне

10.10.2017, 21:35. Показов 2322. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, форумчане. Возникла тут очень интересная задача. Цель: написать онлайн-шахматы. Реализация: фронт на html + js, логика на питоне. По моей задумке ход пользователя будет посылаться на сервер, и получать ответ типа "можно/нельзя". Реализацию самих шахмат упустим. В общем сложность - нельзя использовать фреймворки. Джанго, фласк, им подобные. Я пробовал смотреть в сторону сокетов, но оказывается хрен как-то свяжешь фронт и бек. Пробовал веб-сокеты - тоже не зашло. Пробовал смотреть в сторону cgi - мне не понравилось что сервер не выдает ответ, а просто открывает новую страницу, а это мне не подходит. Еще раз повторю - без джанго, фласков и им подобных. Только питон. От советов типа "пиши на пхп, используй какой-то фреймворк" и тд тоже прошу воздержаться. Хотелось бы узнать как можно адекватно реализовать сервер на питоне, чтобы он был своеобразным "черным ящиком". Ему присылают данные - с него получают данные. Заранее спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.10.2017, 21:35
Ответы с готовыми решениями:

Сервер на питоне
вообщем я как сисадмин работаю удаленно из дома хочу написать защещенный стойкий ко взлому...

Простой сервер на питоне
добрый день. Я только осваиваю Питон(раньше работал с шарпом, плюсами и джаваскриптом) есть у...

Клиент сервер на питоне
РЕБЯЯЯЯТ СРОЧНО ПОМОГИТЕ, ПОЖАЛУЙСТА.. завтра зачёт, надо практику сдать, заданий куча , времени...

Простейший http сервер на питоне
Написать на Python собственный простейший http сервер, умеющий обрабатывать запросы http: get и...

10
Эксперт по компьютерным сетям
5898 / 3355 / 1035
Регистрация: 03.11.2009
Сообщений: 10,003
11.10.2017, 04:31 2
Цитата Сообщение от HerrHebels Посмотреть сообщение
В общем сложность - нельзя использовать фреймворки.
Цитата Сообщение от HerrHebels Посмотреть сообщение
Еще раз повторю - без джанго, фласков и им подобных.

Не по теме:

Я думаю, самая главная, самая коренная духовная потребность русского народа есть потребность страдания, всегдашнего и неутолимого, везде и во всем.

Ф.М. Достоевский
Вы никак Федора Михайловича на ночь читали?

3
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
11.10.2017, 09:27 3
Цитата Сообщение от HerrHebels Посмотреть сообщение
В общем сложность - нельзя использовать фреймворки.
Это тебе кто-то такую задачу выдал или ты сам придумал и решил позаниматься ерундой?

Цитата Сообщение от HerrHebels Посмотреть сообщение
Пробовал смотреть в сторону cgi - мне не понравилось что сервер не выдает ответ, а просто открывает новую страницу, а это мне не подходит.
Так ты ajax запрос к скрипту делай и все (а вообще cgi это прошлый век в прямом смысле слова)
0
Эксперт Python
4632 / 2050 / 361
Регистрация: 17.03.2012
Сообщений: 10,133
Записей в блоге: 6
11.10.2017, 10:13 4
Цитата Сообщение от HerrHebels Посмотреть сообщение
нельзя использовать фреймворки. Джанго, фласк, им подобные. Я пробовал смотреть в сторону сокетов, но оказывается хрен как-то свяжешь фронт и бек.
Извините, а что ж вы хотели? Добрые люди написали для этих задач фреймворки. Если их использовать нельзя - всё, делайте на сокетах. Чудес не бывает. Если трудно - значит, грызть гранит доков и гугла с бОльшим упорством.

Добавлено через 2 минуты
Сокеты, правда, слегка не для того, это задача программы-вебсервера. Но ничего, разберётесь, если уж влезли.
0
0 / 0 / 3
Регистрация: 26.10.2013
Сообщений: 133
11.10.2017, 12:30  [ТС] 5
Цитата Сообщение от dondublon Посмотреть сообщение
задача программы-вебсервера
Ну вот я и написал чтобы получить совет по реализации такой программы)
а заодно ссылку на документацию, желательно
0
Эксперт Python
5418 / 3842 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
11.10.2017, 12:44 6
Цитата Сообщение от HerrHebels Посмотреть сообщение
о оказывается хрен как-то свяжешь фронт и бек
Вы раздел внимательно смотрели? Только недавно давал здесь пример реализации простого web-cервера на сокетах с листингом директорий
На сокетах точно также можно генерить какой-то угодно html (либо делать AJAX запросы к серверу и возвращать json) - просто все это будет очень занудно, много кода и ручной реализации любого чиха, да и архитектура приложения будет далека от стандартов.
0
Эксперт Python
4632 / 2050 / 361
Регистрация: 17.03.2012
Сообщений: 10,133
Записей в блоге: 6
11.10.2017, 13:04 7
Цитата Сообщение от HerrHebels Посмотреть сообщение
Ну вот я и написал чтобы получить совет по реализации такой программы)
В вашем условии сказано, что нельзя использовать только фреймворки, сиречь питоновские. Но там не сказано, что нельзя использовать готовые программы-вебсервера. Так что, видимо, можно взять готовую. Nginx или apache. Останется только связать её с питоном.
0
Garry Galler
11.10.2017, 13:51
  #8

Не по теме:

dondublon,
Я вас умоляю - какой nginx? Человек, курсовик, похоже пишет.
Эти шахматы всем подряд дают как задание. Хотя может это и не от препода задачка, а от эйчара - они тоже любят так над соискателями поприкалываться. Типа, покажи, как ты умеешь на голом python'е работать.
Сервак все равно локальным, скорей всего, будет.
Тогда уже из готового и встроенного - http.server.HTTPServer. Ну или чисто на сокетах - socketserver.TCPServer

0
Эксперт Python
4632 / 2050 / 361
Регистрация: 17.03.2012
Сообщений: 10,133
Записей в блоге: 6
11.10.2017, 17:51 9
Цитата Сообщение от Garry Galler Посмотреть сообщение
Эти шахматы всем подряд дают как задание. Хотя может это и не от препода задачка, а от эйчара - они тоже любят так над соискателями поприкалываться. Типа, покажи, как ты умеешь на голом python'е работать.
Сорян, не в курсе таких тонкостей. Я бы делал с nginx.

Добавлено через 15 секунд
Цитата Сообщение от Garry Galler Посмотреть сообщение
Эти шахматы всем подряд дают как задание. Хотя может это и не от препода задачка, а от эйчара - они тоже любят так над соискателями поприкалываться. Типа, покажи, как ты умеешь на голом python'е работать.
Сорян, не в курсе таких тонкостей. Я бы делал с nginx.
0
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,242
12.10.2017, 00:56 10
Если учебная задача, то не подойдет ли вот так:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from http.server import SimpleHTTPRequestHandler
import socketserver
 
 
class MyHandler(SimpleHTTPRequestHandler):
    def do_GET(s):
        s.send_response(200)
        s.send_header("Content-type", "text/html")
        s.end_headers()
        if s.path == "/allowed":
            s.wfile.write(b"allowed")
        else:
            s.wfile.write(b"not allowed")
 
PORT = 8889
 
with socketserver.TCPServer(("", PORT), MyHandler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()
Соответственно, в адресной строке браузера пишешь:
http://localhost:8889/notallowed
http://localhost:8889/allowed

Вдохновение можно почерпнуть здесь:
https://docs.python.org/3/library/http.server.html

И там в самом верху есть ссылка на исходник.
На всякий случай вот прямая ссылка: https://github.com/python/cpyt... /server.py

Смотришь, как там реализовано и переписываешь для себя.

Через параметры GET-запроса можно так сделать:
Python
1
2
from urllib.parse import urlparse, parse_qs
get_param = parse_qs(urlparse(s.path).query)
Ну, я по пути определил. Если бизнес-логика у тебя на сервере будет, то в путь или в параметры надо будет натолкать просто исходную клетку и клетку для перехода. Фигуру, стоящую на исходной клетке, сервер и сам знает. Соответственно, сигнализируешь как-то там, что ход возможен или нет.
0
43 / 43 / 23
Регистрация: 20.11.2017
Сообщений: 80
22.11.2017, 01:21 11
если фронт на js то почему бы не использовать socketio
правда для того чтоб поднять я использовал aiohttp

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import asyncio
from aiohttp import web
import socketio
 
sio = socketio.AsyncServer(async_mode='aiohttp')
app = web.Application()
sio.attach(app)
namespace = '/test'
 
# что слушает сервер
@sio.on('connect', namespace=namespace)
async def test_connect(sid, environ):
    print('connect user')
    await sio.emit('my response', {'data': 'Connected', 'count': 0}, # ответ от сокета пользователю
                   room=sid,
                   namespace=namespace)
на вебморде все тоже довольно просто
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$(document).ready(function(){
            namespace = '/test';
            var socket = io.connect('http://' + document.domain + ':' + location.port + namespace);
            socket.on('connect', function() {
                // действия при создании подключения
            });
            socket.on('disconnect', function() {
                // действия при разрыве подключения
            });
            socket.on('my response', function(msg) {
                // обработчик на то что пришлет сервер
            });
            
                 //отправка данных от въюхи пользователю
                //socket.emit('url socket', {data: 'val'});
             
        });
0
22.11.2017, 01:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2017, 01:21
Помогаю со студенческими работами здесь

Как открыть файл на питоне, чтобы внутри содержимый код работал при открытии на питоне?
Хочу открыть файл, чтобы внутри код работал на питоне: >>> a = open(r'F:\python\py\Madi...

О питоне
Всем привет. У меня тут назрело несколько вопросов по Питону. Так что буду благодарен если вы...

ИИ на питоне
Здравствуйте! Скажите, если есть достаточно большой пакет ИИ на питоне, каким образом можно его...

Ошибка в питоне
Возникает вот такая вот ошибка https://prnt.sc/10nfjau При попытке запуска на сервере....

Калькулятор в питоне
Здравствуйте, помогите дополнить калькулятор. Я не знаю как сделать, чтобы он производил действия...

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru