Создаем собственный веб-сервер на Python с использованием сокетов

Цели

Простая в использовании IDE (интегрированная среда разработки). На моей нынешней работе (системным инженером) мне пришлось разрабатывать сценарии для автоматизации создания документов. Одна из проблем конкретного набора инструментов, который мы используем, заключается в том, что в нем нет редактора исходного кода. Нет подсветки синтаксиса или завершения кода. Это очень неудобно. Я понятия не имею, работает ли то, что я пишу, пока не запущу это и не увижу ошибки / предупреждения.

Отладка выполняется с помощью операторов печати. Так работать нельзя.

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

Бонусом, поскольку я не являюсь веб-разработчиком, работающим на полную ставку, является то, что я смог бы потенциально использовать его для других приложений.

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

Real-world Examples of Python in Web Development

Python is undoubtedly a very popular programming language, and web development projects in Python can significantly help to improve your resume as it is widely used in almost every organization in the world. To learn more about Python with web development projects for beginners, consider registering for the Web Design online course by KnowledgeHut.

Here are some real-world examples of Python projects on web development. These include some of the most famous names that people tend to use all the time, without realizing that they are actually using Python-based websites and applications:

1. Netflix

Netflix is one of the most renowned entertainment applications for benching movies and web series. Netflix is one of the biggest pieces of evidence of digital change and transformation, which incorporates Python in its creation and maintenance. The most used streaming service in the world is a result of web development projects using Python.

Python programming language has a major share in the success of building a popular web application like Netflix. Netflix’s web developers themselves said that Python is used in the full development cycle of the application and also for maintaining the application. Python is greatly used for maintaining the security of Netflix and running its various applications. The in-house content distribution network of Netflix, Open Connect, is also set up with the help of Python, and end users can watch whatever they want to without any hindrance.

2. Reddit

The World is not unaware of the impact that Reddit created on the internet and its transformation, but what most people don’t know is that Reddit has also been coded in Python programming language. Reddit has been the mainstay of the global internal diet for a very long time as it is a go-to website for reading recent news, cutting-edge social talks, and almost everything else.

Reddit uses Python programming to translate the requests of the users that have been sent to the Reddit browser. Python works with the request of the user and then sends the required HTML that is displayed on the screens of the users. Even though the users can’t see how Python functions with Reddit, it is still there, and Python is inseparable from the application.

3. Spotify

Spotify is the one-step application when you want to listen to your favorite playlist. Spotify has made searching and listening to music so much easier when compared to the old CD and DVD days. It provides hassle-free and fast services, and the application is built heavily with Python programming language.

The entire back-end development of Spotify is based on Python, as it provides interconnected services for a better user experience. It has been remarked by the web developers of Spotify that almost 80% of the application is developed through coding in Python. Spotify is a phenomenal example of a Python project for web development that has proven to be immensely successful in recent times.

Additionally, Spotify offers a customized data analytics program called Luigi. Luigi is responsible for driving Spotify’s Radio and Discover features and making suggestions for people the users might like to follow. This application was created to swiftly prototype complex data operations.

Intermediate Python Web Development Projects with Source Code

1. Hangman Game

The code provides a basic implementation of the Hangman game, where the player needs to guess letters to reveal the hidden word before running out of attempts.

import random
def select_word():
words = 
return random.choice(words)

def play_hangman(word):
guessed_letters = set()
attempts = 6

while True:
print(" ".join(letter if letter in guessed_letters else "_" for letter in word))
print("Guessed Letters:", " ".join(guessed_letters))

if set(word) == guessed_letters:
print("Congratulations! You guessed the word!")
break

if attempts == 0:
print("Game Over! You ran out of attempts.")
break

guess = input("Enter a letter: ").lower()
if guess in guessed_letters:
print("You already guessed that letter. Try again.")
continue

guessed_letters.add(guess)
if guess not in word:
attempts -= 1
print(f"Wrong guess! You have {attempts} attempts left.")

word_to_guess = select_word()
print("Welcome to Hangman!")
play_hangman(word_to_guess)

2. Todo list

This program defines a TodoList class that represents a simple to-do list. The class has several methods to add, remove, display, and clear tasks within the list.

class TodoList:
def __init__(self):
self.tasks = []

def add_task(self, task):
self.tasks.append(task)

def remove_task(self, task):
if task in self.tasks:
self.tasks.remove(task)

def show_tasks(self):
print("Todo List:")
for index, task in enumerate(self.tasks):
print(f"{index + 1}. {task}")

def clear_tasks(self):
self.tasks = []

# Usage
todo_list = TodoList()
todo_list.add_task("Task 1")
todo_list.add_task("Task 2")
todo_list.show_tasks()
todo_list.remove_task("Task 2")
todo_list.show_tasks()
todo_list.clear_tasks()
todo_list.show_tasks()

3. Fibonacci Sequence Generator

This program generates a Fibonacci sequence of numbers up to a given count n. The program defines a function called generate_fibonacci_sequence that takes n as an argument.

def generate_fibonacci_sequence(n):
sequence = 

if n <= 2:
return sequence

while len(sequence) < n:
next_number = sequence + sequence
sequence.append(next_number)

return sequence

# Usage
n = int(input("Enter the number of Fibonacci numbers to generate: "))
fibonacci_sequence = generate_fibonacci_sequence(n)
print("Fibonacci Sequence:", fibonacci_sequence)

4. Music Player

This program uses the Pygame library to play music from a file. It defines a function called play_music that takes a file path as an argument. The function initializes the Pygame library and the mixer module for audio playback. It then loads the specified music file using pygame.mixer.music.load and starts playing the music using pygame.mixer.music.play.

import pygame

def play_music(file_path):
 pygame.init()
 pygame.mixer.init()
 pygame.mixer.music.load(file_path)
 pygame.mixer.music.play()

# Usage
file_path = "music.mp3"
play_music(file_path)

Frequently Asked Questions (FAQs)

1. What tools and resources do I need to start a Python web development project?

The knowledge of basic web designing and development applications such as HTML and CSS are the major resources that you need to start a Python web development project. Also, getting the hang of popular web development tools such as Django, CherryPy, Flask, etc., can help you to easily work on the development of Python.

2. Where can I find Python projects for beginners?

Here’s where you can find beginner-friendly Python projects:

  • Number Guessing
  • Interactive Dictionary
  • Dice Rolling Simulator
  • Anagram Game
  • Tic Tac Toe GUI
  • Rock Paper Scissors 

3. Where can I learn Python projects for free?

You can learn Python projects for free on Google’s Python classes, Microsoft’s Introduction to Python course, and many such websites that offer free courses to learn the basics of Python.

4. How can freelancers find web development projects in Python?

Freelancers can build the necessary skills and show their work experience to different clients on various online websites and applications to show their expertise in Python projects for web development. They may show their previous works and take clients on board by projecting their web development skills.

What is an HTTP Server?

An HTTP web server is nothing but a process that is running on your machine and does exactly two things:

1- Listens for incoming http requests on a specific TCP socket address (IP address and a port number which I will talk about later)

2- Handles this request and sends a response back to the user.

Let me make my point less abstract.

Imagine you pull up your Chrome browser and type www.yahoo.com in the address bar.

Of course you are going to get the Yahoo home page rendered on your browser window.

But what really just happened under the hood?

Actually a lot of things have happened and I might dedicate a whole article to explain the magic behind how this happened.

But for the sake of simplicity, I will abstract away some of the details and talk about this at a very high level.

At a high level, when you type www.yahoo.com on your browser, your browser will create a network message called an HTTP request.

This Request will travel all the way to a Yahoo computer that has a web server running on it. This web server will intercept your request, and handle it by responding back with the html of the Yahoo home page.

Finally your browser renders this html on the screen and that’s what you see on your screen.

Every interaction with the Yahoo home page after that (for example, when you click on a link) initiates a new request and response exactly like the first one.

To reiterate, the machine that receives the http request has a software process called a web server running on it. This web server is responsible for intercepting these requests and handling them appropriately.

Alright, now that you know what a web server is and what its function is exactly, you might be wondering how does the request reach that yahoo machine in the first place?

Good question!

In fact this is one of my favorite questions that I ask potential candidates in a coding interview.

Let me explain how, but again….at a high level.

Краткая история создания Пайтон

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

Гвидо – так звали инженера, который думал об этом языке в последнее время, так как нуждался в нем для одного из своих проектов.

Взявшись за дело, Гвидо позаимствовал некоторые элементы из другого языка программирования, который назывался “ABC”. Сам ABC был создан ранее для обучения новичков программированию.

Когда Гвидо закончил работу над новым языком программирования, пришло время дать ему имя. 

Гвидо назвал его Python (Питон, произносится как Пайтон).Но он назвал его так не в честь змеи, а в честь своего любимого комедийного сериала “Летающий цирк Монти Пайтона”.

Как установить Flask

Чтобы установить Flask, сначала нужно установить Python. Приступим.

Установка Python

Flask требует наличия Python версии 3.5 или выше. Если у вас нет Python, его можно загрузить с официального сайта Python. Подробную инструкцию можно посмотреть в нашем гайде по установке Python для всех операционных систем.

Установка PIP

Если вы скачиваете официальную версию Python или пакет Anaconda, у вас автоматически установится PIP. Это менеджер пакетов для Python, который позволяет управлять сторонними библиотеками. Нам он понадобится, чтобы установить Flask.

Чтобы проверить, есть ли у вас PIP, введите в консоли:

или

В ответ на экран выведется версия PIP. Если ничего не происходит, значит, PIP у вас не установлен. Исправим это:

Снова проверим, появился ли в системе менеджер пакетов. Если всё равно что-то не получается, попробуйте найти решение проблемы на Stack Overflow — или обратитесь к астрологу :)

Установка Flask

Теперь поставим сам Flask. Делается это очень просто:

Начнётся процесс загрузки Flask, после которого он будет готов к использованию. Если вам нужна конкретная версия Flask, установить её можно, указав её номер с помощью дополнительного параметра ==<version>.

Например, мы можем установить версию 2.0.1:

Чтобы проверить, работает ли Flask, введём следующую команду:

или создадим Python-файл и впишем туда такую строку:

Building a web scraper: Python prepwork

Throughout this entire web scraping tutorial, Python 3.4+ version will be used. Specifically, we used 3.12.0, but any 3.4+ version should work just fine.

For Windows installations, when installing Python, make sure to check “PATH installation”. PATH installation adds executables to the default Windows Command Prompt executable search. Windows will then recognize commands like pip or python without requiring users to point it to the directory of the executable (e.g., C:/tools/python/…/python.exe). If you have already installed Python but did not mark the checkbox, just rerun the installation and select modify. On the second screen, select “Add to environment variables”.

Создание нового проекта

Давайте создадим новый каталог проекта в файловой системе Linux (Ubuntu), который затем будет работать с приложениями и инструментами Linux с помощью VS Code.

  1. Закройте VS Code и откройте Ubuntu 18.04 (командная строка WSL), перейдя в меню «Пуск » (значок windows в нижней левой части) и введя «Ubuntu 18.04».

  2. В командной строке Ubuntu перейдите к папке, в которую нужно поместить проект, и создайте для нее каталог: .

Совет

Важно помнить, что при использовании подсистема Windows для Linux (WSL) теперь вы работаете между двумя разными файловыми системами: 1) файловой системой Windows и 2) файловой системой Linux (WSL), которая является Ubuntu для нашего примера

Обратите внимание на место установки пакетов и файлов хранения. Вы можете установить одну версию средства или пакета в файловой системе Windows и совершенно другую версию в файловой системе Linux

Обновление средства в файловой системе Windows не будет влиять на средство в файловой системе Linux и наоборот. WSL монтирует жесткие диски на вашем компьютере в папку дистрибутива Linux. Например, диск Windows C: подключается в . Вы можете получить доступ к файлам Windows из терминала Ubuntu и использовать приложения и инструменты Linux для этих файлов и наоборот. Для разработки веб-приложений Python мы рекомендуем работать в файловой системе Linux, поскольку большая часть веб-инструментов изначально написана для Linux и развернута в рабочей среде Linux. Это также позволит избежать смешанной формальной модели файловой системы (например, Windows не учитывает регистр в отношении имен файлов). Тем не менее, WSL теперь поддерживает переходы между файловыми системами Linux и Windows, поэтому вы можете размещать свои файлы на любой из них. Подробнее.

One Final Word

You can actually start a web server with python without even having to write any scripts.

Just go to your terminal and do the following (but make sure you are on python 3)

By default, this server will be listening on all interfaces and on port 8080.

If you want to listen to a specific interface, do the following:

Also starting from Python 3.7, you can use the –directory flag to serve files from a directory that is not necessarily the current directory.

So the question now is, why would you ever need to write a script when you can just invoke the server easily from the terminal?

Well, remember that you are using the SimpleHTTPRequestHandler. If you want to create your custom handlers (which you will probably want to do) then you won’t be able to do that from the terminal.

Веб-фреймворк Python Japronto

Japronto является быстрым, масштабируемым, асинхронным HTTP инструментарием для Python 3.5+, интегрированным с конвейерным HTTP-сервером, базирующимся на и .

Он предназначен тех, кому важна скорость, внимательность к деталям и новые разработки. На данный момент нет особых новостей касательно разработки Japronto, однако о том, что проект заброшен, создатели также не сообщали.

Установка Japronto

Shell

pip install japronto

1 pip install japronto

Пример Hello world на Japronto

Python

from japronto import Application

def hello(request):
return request.Response(text=’Hello world!’)

app = Application()
app.router.add_route(‘/’, hello)
app.run(debug=True)

1
2
3
4
5
6
7
8

fromjapronto importApplication

defhello(request)

returnrequest.Response(text=’Hello world!’)

app=Application()

app.router.add_route(‘/’,hello)

app.run(debug=True)

Инструменты и технологии

Языки программирования

Существует множество языков программирования, которые используются для веб-разработки. Некоторые из наиболее популярных:

  • JavaScript – это один из наиболее популярных языков программирования, используемых для frontend разработки. Он используется для создания интерактивных и динамических элементов на веб-страницах.
  • PHP – это язык программирования, который широко используется для создания серверной логики веб-приложений. Он часто используется в сочетании с базами данных, такими как MySQL, для создания динамических веб-страниц.
  • Python – это язык программирования, который часто используется для backend разработки. Он известен своей простотой и удобством в использовании, а также благодаря множеству библиотек и фреймворков, доступных для использования.
  • Ruby – это язык программирования, который часто используется для backend разработки веб-приложений. Чаще всего используется как фреймворк Ruby on Rails.
  • Java – это язык программирования, который известен своей масштабируемостью и надежностью.

Выбор языка программирования зависит от требований конкретного проекта, а часто и от предпочтений разработчика.

Библиотеки и фреймворки

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

Некоторые из наиболее популярных библиотек и фреймворков:

  • React – это библиотека JavaScript, которая используется для создания интерактивных пользовательских интерфейсов.
  • Angular – это фреймворк JavaScript, который используется для создания больших масштабируемых веб-приложений.
  • Vue.js – это прогрессивный фреймворк JavaScript, который используется для создания интерактивных пользовательских интерфейсов.
  • Laravel – это фреймворк PHP.
  • Django – это фреймворк Python.
  • Ruby on Rails – это фреймворк Ruby.
  • Express.js – это фреймворк Node.js, который используется для создания серверной логики веб-приложений.

Системы контроля версий

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

Некоторые из наиболее популярных систем:

  • Git – это наиболее распространенная система контроля версий, используемая для управления изменениями в коде. Git позволяет разработчикам работать совместно над проектом и отслеживать версии кода.
  • SVN (Subversion) – это другая распространенная система контроля версий, используемая для управления изменениями в коде. SVN обеспечивает более простой интерфейс, чем Git, и может быть удобнее в использовании для менее опытных разработчиков.
  • Mercurial – это еще одна система контроля версий, которая похожа на Git, но имеет некоторые отличия в функциональности и интерфейсе.
  • Perforce – это коммерческая система контроля версий, которая широко используется в больших компаниях и организациях, где необходимо управлять изменениями в больших проектах.

Среды разработки

Среды разработки (IDE) – это программы, которые упрощают и значительно ускоряют процесс разработки сайтов и веб-приложений, предоставляя различные функции и инструменты для написания, отладки и тестирования кода. Некоторые из наиболее популярных IDE:

  • Visual Studio Code – это бесплатный инструмент от Microsoft, который поддерживает множество языков программирования. Он имеет большое сообщество пользователей и огромное число плагинов.
  • WebStorm – это платный IDE, который разработан специально для веб-разработки..
  • Atom – это бесплатный IDE с открытым исходным кодом.
  • Sublime Text – это платный IDE, который также поддерживает множество языков программирования.

Каждая из этих IDE имеет свои преимущества и недостатки, и выбор зависит от конкретных потребностей разработчика и проекта, а часто просто делом привычки.

Заключение

Запоминать что-то без понимания, как это работает — злое зло не самый разумный подход для разработчика. Работа с сокетами тому отличный пример. На первый взгляд может показаться, что уложить в голове последовательность приготовления клиентских и серверных сокетов к работе практически не возможно. Это происходит из-за того, что не сразу понятен смысл производимых манипуляций. Однако, понимая, как осуществляется сетевое взаимодействие, API сокетов сразу становится прозрачным и легко оседает в подкорке. А с точки зрения полезности полученных знаний, я считаю

что понимание принципов сетевого взаимодействия жизненно важно для разработки и отладки действительно сложных веб-проектов

Понравилась статья? Поделиться с друзьями: