파이썬 웹 애플리케이션 자작 시작
소개
이 기사는 Zenn 온라인 책
'성장하는 3년째 웹 엔지니어를 위한 파이썬 웹 애플리케이션 자작 입문'
의 일부 발췌합니다.
여기
h tps:// 퀵했다. 소 m/미감 1925/있어 MS/어서 5575타 6C45
함께 읽어주세요.
파이썬으로 웹 서버를 작성해보십시오.
갑자기 파이썬에서 브라우저에서 요청을 받고 브라우저에 응답을 반환하는 서버를 만듭니다.
아래의 프로그램은 자신의 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
읽어보십시오!
이 기사의 소스 코드 해설도 있습니다.
Reference
이 문제에 관하여(파이썬 웹 애플리케이션 자작 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/bigen1925/items/45459fd66510dea27e4c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
갑자기 파이썬에서 브라우저에서 요청을 받고 브라우저에 응답을 반환하는 서버를 만듭니다.
아래의 프로그램은 자신의 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
읽어보십시오!
이 기사의 소스 코드 해설도 있습니다.
Reference
이 문제에 관하여(파이썬 웹 애플리케이션 자작 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/bigen1925/items/45459fd66510dea27e4c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ python TCPServer.py
=== サーバーを起動します ===
=== クライアントからの接続を待ちます ===
코멘트등을 제외하면, 단지 10수행으로, 꽤 원시적인 Web 서버를 움직일 수가 있었습니다.
(현시점에서는 웹 서버라고 부를 수 있는 흰개미가 아니라, TCP 서버라고 부르는 것이 정확합니다만・・・)
아무것도, 구조를 이해하려면 스스로 만들어 보는 것이 제일의 지름길입니다.
웹서버와 웹프레임워크의 구조를 이해하고 싶은 분은 꼭 온라인북
htps : // 전. 에 v/비겐 1925/보오 ks/에6c9492아82f5에2에10f인가/ぃ에우ぇr/504d96
읽어보십시오!
이 기사의 소스 코드 해설도 있습니다.
Reference
이 문제에 관하여(파이썬 웹 애플리케이션 자작 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/bigen1925/items/45459fd66510dea27e4c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)