
파이썬 웹 애플리케이션 자체 제작 시작
소개
이 기사는 Zenn 온라인 책
'성장하는 3년째 웹 엔지니어를 위한 파이썬 웹 애플리케이션 자작 입문'
의 일부 발췌합니다.
여기
h tps:// 퀵했다. 작은 m/비겐 1925/있어 MS/어서 5575타 6C45아 91808d
함께 읽어주세요.
파이썬으로 웹 서버를 작성해보십시오.
갑자기 파이썬에서 브라우저에서 요청을 받고 브라우저에 응답을 반환하는 서버를 만들어 봅시다.
아래의 프로그램은 자신의 PC의 포트 8080( localhost:8080
)에서 서버로서 기동해, 브라우저로부터 요구를 접수하면 그 내용을 server_recv.txt
라고 하는 파일에 써내고, 그 후 server_send.txt
에서 응답으로 브라우저에 반환합니다.
TCPServer.py
import socket
class TCPServer:
"""
TCP通信を行うサーバーを表すクラス
"""
def serve(self):
"""
サーバーを起動する
"""
print("=== サーバーを起動します ===")
try:
# socketを生成
server_socket = socket.socket()
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# socketをlocalhostのポート8080番に割り当てる
server_socket.bind(("localhost", 8080))
server_socket.listen(10)
# 外部からの接続を待ち、接続があったらコネクションを確立する
print("=== クライアントからの接続を待ちます ===")
(client_socket, address) = server_socket.accept()
print(f"=== クライアントとの接続が完了しました remote_address: {address} ===")
# クライアントから送られてきたデータを取得する
request = client_socket.recv(4096)
# クライアントから送られてきたデータをファイルに書き出す
with open("server_recv.txt", "wb") as f:
f.write(request)
# クライアントへ送信するレスポンスデータをファイルから取得する
with open("server_send.txt", "rb") as f:
response = f.read()
# クライアントへレスポンスを送信する
client_socket.send(response)
# 通信を終了させる
client_socket.close()
finally:
print("=== サーバーを停止します。 ===")
if __name__ == '__main__':
server = TCPServer()
server.serve()
반환용 server_send.txt
도 작성해 둡시다.
server_send.txt
HTTP/1.1 200 OK
Date: Wed, 28 Oct 2020 07:57:45 GMT
Server: Apache/2.4.41 (Unix)
Content-Location: index.html.en
Vary: negotiate
TCN: choice
Last-Modified: Thu, 29 Aug 2019 05:05:59 GMT
ETag: "2d-5913a76187bc0"
Accept-Ranges: bytes
Content-Length: 45
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
<html><body><h1>It works!</h1></body></html>
프로그램을 움직여보세요
콘솔에서 소스 코드를 배치한 디렉토리로 이동한 후 아래 명령으로 프로그램을 실행합니다.
$ python TCPServer.py
=== サーバーを起動します ===
=== クライアントからの接続を待ちます ===
콘솔의 탭을 열어두고 브라우저에서 http://localhost:8080
에 액세스해 봅시다.

무사히 웹 페이지로 표시되었습니다!
웹 서버의 작동 방식 이해
코멘트등을 제외하면, 단지 10수행으로, 꽤 원시적인 Web 서버를 움직일 수가 있었습니다.
(현시점에서는 웹 서버라고 부를 수 있는 흰개미가 아니라, TCP 서버라고 부르는 것이 정확합니다만・・・)
아무것도, 구조를 이해하려면 스스로 만들어 보는 것이 제일의 지름길입니다.
웹서버와 웹프레임워크의 구조를 이해하고 싶은 분은 꼭 온라인북
htps : // 천. 에 v/비겐 1925/보오 ks/에6c9492아82f5에2에10f인가/ぃ에우ぇr/504d96
읽어보십시오!
이 기사의 소스 코드 해설도 있습니다.
갑자기 파이썬에서 브라우저에서 요청을 받고 브라우저에 응답을 반환하는 서버를 만들어 봅시다.
아래의 프로그램은 자신의 PC의 포트 8080(
localhost:8080
)에서 서버로서 기동해, 브라우저로부터 요구를 접수하면 그 내용을 server_recv.txt
라고 하는 파일에 써내고, 그 후 server_send.txt
에서 응답으로 브라우저에 반환합니다.TCPServer.py
import socket
class TCPServer:
"""
TCP通信を行うサーバーを表すクラス
"""
def serve(self):
"""
サーバーを起動する
"""
print("=== サーバーを起動します ===")
try:
# socketを生成
server_socket = socket.socket()
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# socketをlocalhostのポート8080番に割り当てる
server_socket.bind(("localhost", 8080))
server_socket.listen(10)
# 外部からの接続を待ち、接続があったらコネクションを確立する
print("=== クライアントからの接続を待ちます ===")
(client_socket, address) = server_socket.accept()
print(f"=== クライアントとの接続が完了しました remote_address: {address} ===")
# クライアントから送られてきたデータを取得する
request = client_socket.recv(4096)
# クライアントから送られてきたデータをファイルに書き出す
with open("server_recv.txt", "wb") as f:
f.write(request)
# クライアントへ送信するレスポンスデータをファイルから取得する
with open("server_send.txt", "rb") as f:
response = f.read()
# クライアントへレスポンスを送信する
client_socket.send(response)
# 通信を終了させる
client_socket.close()
finally:
print("=== サーバーを停止します。 ===")
if __name__ == '__main__':
server = TCPServer()
server.serve()
반환용
server_send.txt
도 작성해 둡시다.server_send.txt
HTTP/1.1 200 OK
Date: Wed, 28 Oct 2020 07:57:45 GMT
Server: Apache/2.4.41 (Unix)
Content-Location: index.html.en
Vary: negotiate
TCN: choice
Last-Modified: Thu, 29 Aug 2019 05:05:59 GMT
ETag: "2d-5913a76187bc0"
Accept-Ranges: bytes
Content-Length: 45
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
<html><body><h1>It works!</h1></body></html>
프로그램을 움직여보세요
콘솔에서 소스 코드를 배치한 디렉토리로 이동한 후 아래 명령으로 프로그램을 실행합니다.
$ python TCPServer.py
=== サーバーを起動します ===
=== クライアントからの接続を待ちます ===
콘솔의 탭을 열어두고 브라우저에서 http://localhost:8080
에 액세스해 봅시다.

무사히 웹 페이지로 표시되었습니다!
웹 서버의 작동 방식 이해
코멘트등을 제외하면, 단지 10수행으로, 꽤 원시적인 Web 서버를 움직일 수가 있었습니다.
(현시점에서는 웹 서버라고 부를 수 있는 흰개미가 아니라, TCP 서버라고 부르는 것이 정확합니다만・・・)
아무것도, 구조를 이해하려면 스스로 만들어 보는 것이 제일의 지름길입니다.
웹서버와 웹프레임워크의 구조를 이해하고 싶은 분은 꼭 온라인북
htps : // 천. 에 v/비겐 1925/보오 ks/에6c9492아82f5에2에10f인가/ぃ에우ぇr/504d96
읽어보십시오!
이 기사의 소스 코드 해설도 있습니다.
$ python TCPServer.py
=== サーバーを起動します ===
=== クライアントからの接続を待ちます ===
코멘트등을 제외하면, 단지 10수행으로, 꽤 원시적인 Web 서버를 움직일 수가 있었습니다.
(현시점에서는 웹 서버라고 부를 수 있는 흰개미가 아니라, TCP 서버라고 부르는 것이 정확합니다만・・・)
아무것도, 구조를 이해하려면 스스로 만들어 보는 것이 제일의 지름길입니다.
웹서버와 웹프레임워크의 구조를 이해하고 싶은 분은 꼭 온라인북
htps : // 천. 에 v/비겐 1925/보오 ks/에6c9492아82f5에2에10f인가/ぃ에우ぇr/504d96
읽어보십시오!
이 기사의 소스 코드 해설도 있습니다.