0 / 0 / 0
Регистрация: 01.12.2015
Сообщений: 21
|
||||||
Простой сервер24.10.2017, 13:01. Показов 1314. Ответов 7
Добрый день
Я совсем новичок. Написал вот такой скрипт:
Есть вопросы: 1) Скрипт “работает только один раз”. После разрыва соединения заново к нему соединится не получается. 2) Всё это крутится на хостинге и папка, куда сливаются данные (где лежит index.html) общедоступна. По каким-то причинам файл появляется там с 10-15-минутным лагом. Не пойму, то ли заморочки хостинга, то ли косяки у меня в скрипте. Наверное правильно складывать всё это в MySQL базу данных, но пока в процессе освоения 3) Буду благодарен за указание на ошибки и косяки в скрипте. Заранее огромное спасибо!
0
|
24.10.2017, 13:01 | |
Ответы с готовыми решениями:
7
Простой сервер на питоне
Простой сервер |
![]() |
|||
24.10.2017, 13:43 | |||
1)
2) 3) Зачем вы поставили пустой return в функции parse? В оригинале все было правильно. А у вас файл index.html не закрывается корректно, по крайне мере строчка f.close() - недостижима.
0
|
0 / 0 / 0
Регистрация: 01.12.2015
Сообщений: 21
|
|
24.10.2017, 15:42 [ТС] | |
Да, скопировал. Ну точнее переписал под себя и видимо допустил ошибку.
Добавлено через 2 минуты Да, f.close() должен стоять перед return А почему return не нужен? Он же закрывает функцию. Добавлено через 6 минут Часть по работе с файлом точно писал сам. А можно ссылку на то, что вы называете "оригиналом" ? Заранее спасибо!
0
|
![]() |
||
24.10.2017, 23:35 | ||
Оригинал (точнее вариации этого кода), гуглятся по нескольким характерным строкам кода. Здесь, например. Вам он вряд ли что-то даст - он слишком упрощен, поскольку написан автором в качестве элементарного примера и не учитывает все нюансы такого низкоуровнего интерфейса как сокеты. У меня из его ~50 строк в итоге получилось 500 строк неблокирующего сервера, умеющего делать листинг директорий, генерировать html по шаблону, открывать файлы и посылать клиенту заголовки клиентского кэширования. Вот ссылка на github, если захотите поизучать: специально залил, чтобы не выкладывать каждый раз здесь примеры реализаций серверов на сокетах. P.S. Возможно, вам стоит присмотреться к готовым Http\TCP серверам из встроенных библиотек python, чем пытаться работать на таким низком уровне как сокеты. Хотя, если у вас девайс понимает только сырые байты, тогда выбор, конечно, невелик. Но, может, и для вашего девайса есть внешняя либа.
0
|
0 / 0 / 0
Регистрация: 01.12.2015
Сообщений: 21
|
||||||
25.10.2017, 00:38 [ТС] | ||||||
Ок, спасибо большое за советы!
Ещё маленький вопрос. Подскажите пожалуйста. Модифицировал код:
Но стоит поменять "w" на "a" (открыть для дозаписи) - и всё работает! Уже всю голову сломал. В чем же тут дело?
0
|
![]() |
||||||||||||
25.10.2017, 01:13 | ||||||||||||
![]() РешениеПоэтому он всегда в таком режиме будет перезаписываться - тем более, что вы пишите в него и пустые данные. А это нужно отсекать проверкой. В том же примере с сайта andreymal.org в коде сразу после цикла считывания стоит такое:
1
|
0 / 0 / 0
Регистрация: 01.12.2015
Сообщений: 21
|
|||||||||||
26.10.2017, 07:48 [ТС] | |||||||||||
Ещё раз здравствуйте
Продолжаю экспериментировать со своим скриптом. Почему вот такой код (см. ниже) иногда генерит пустой файл:
Тем более делается специальная пауза перед следующими операторами? Заранее спасибо!
0
|
26.10.2017, 07:48 | |
Помогаю со студенческими работами здесь
8
Простой сервер Простой сервер (sockets) Простой хост сервер
простой веб-сервер Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
![]() |
||||
Непрерывная интеграция для пакета Python
Mr. Docker 22.06.2025
Было 4 часа утра пятницы, когда я выпустил новую версию нашей внутренней библиотеки для обработки данных. Релиз 0. 5. 2 содержал небольшой фикс для обработки дат в ISO формате, что может пойти не так?. . .
|
Продвинутый ETL на C# из OLTP БД в хранилище
stackOverflow 22.06.2025
Работая в сфере корпоративной аналитики, я постоянно сталкиваюсь с одним и тем же - нужны чистые, структурированные и, главное, свежие данные. Без них современные аналитические системы, машинное. . .
|
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
|
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
|
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
|
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
|
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
|
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C#
Задание 1:
КЛАСС FORM 1
public partial class Form1 : Form
{
Spisok listin = new Spisok();
. . .
|
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
|
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
|