python -m http.server
File “
SyntaxError: invalid syntax
9.2.2 웹 서버 게이트웨이 인터페이스
- 아파치는 mod_php 모듈 내에서는 PHP, mode_perl 모듈 내에서는 펄, mod_python 모듈 내에서는 파이썬을 실행
- 그리고 이러한 동적 언어의 코드는 외부 프로그램이 아닌 장기적으로 작동하는 아파치 프로세스 내에서 실행.
- 다른 방법은 별도의 장기적으로 작동하는 프로그램 내에서 동적언어를 실행하고 웹 서버와 통신하는 것. FaseCGI와 SCGI가 있다.
- 파이썬 웹 개발은 파이썬 웹 애플리케이션과 웹 서버간의 범용적인 API 인 WSGI의 정의에서부터 시작,
9.2.3 프레임워크
- 웹 서버는 HTTP와 WSGI의 세부사항을 처리
- 웹 프레임워크는 최소한의 클라이언트의 요청과 서버의 응답을 처리. 일부 혹은 모든 기능을 제공
- 라우트(route) URL을 해석하여 해당 서버의 파일이나 파이썬 코드를 찾아준다.
- 템플릿(template) 서버사이드의 데이터를 HTML 페이지에 병합한다.
- 인증(authentication) 및 권한(authorization) 사용자 이름과 비밀번호, 퍼미션을 처리 한다.
- 세션(session) 웹사이트에 방문하는 동안 사용자의 임시 데이터를 유지 한다.
9.2.4 bottle
pip install bottle
from bottle import route, run
@route('/') def home(): return "Is isn`t fancy, but it's my home page"
run(host='localhost', port=9999)
- 데커레이터를 사용하여 함수와 URL을 연결.
from bottle import route, run, static_file @route('/') def main(): return static_file('index.html', root='.') run(host='localhost', port=9999)
from bottle import route, run, static_file @route('/') def home(): return static_file('index.html', root='.') @route('/echo/<thing>') def echo(thing): return "Say hello to my little friend: %s!" % thing run(host='localhost', port=9999)
import requests resp = requests.get('http://localhost:9999/echo/Mothra') if resp.status_code = 200 and resp.text = 'Say hello to my little friend: Mothra!': print('It worked! That almost never happens!') else: print('Argh, got this:', resp.text
9.2.5 FLask
from flask import flask app = Flask(__nam__, static_folder='.', static_url_path='') @app.route('/') def home(): return app.send_static_file('index.html') @app.route('/echo/<thing>') def echo(thing): return "Say hello to my little friend: %s" % thing app.run(port=9999, debug=True)
from flask import Flask, render_template app = Flask(__name__) @app.route('/echo/<thing>') def echo(thing): return render_template('flask2.html', thing=thing) app.run(port=9999, debug=True)
from flask import Flask, render_template app = Flask(__name__) @app.route('/echo/<thing>/<place>') def echo(thing, place): return render_template('flask3.html', thing=thing, place=place) app.run(port=9999, debug=True)
from flask import Flask, render_template, request app = Flask(__name__) @app.route('/echo/) def echo(): thing = request.args.get('thing') place = request.args.get('place') return render_template('flask3.html', thing=thing, place=place) app.run(port=9999, debug=True)
from flask import Flask, render_template, request app = Flask(__name__) @app.route('/echo/') def echo(): kwargs = {} kwargs['thing'] = request.args.get('thing') kwargs['place'] = request.args.get('place') return render_template('flask3.html', **kwargs) app.run(port=9999, debug=True)
9.2.6 비파이썬 웹 서버
- 제품을 배포할때는 빠른 웹 서버로 파이썬을 실행하는 것이 좋다.
- 일반적으로 다음을 선택한다.
- 아파치 와 mod_wsgi모듈
- 엔진엑스와 uWSGI 앱서버
- 아파치는 인기가 많고
- 엔진 엑스는 안정성과 메모리를 적게 사용하는 것으로 유명 ** 아파치 **
- 아파치 웹 서버에 최적화된 WSGI 모듈을 mod_wsgi다.
- 이 모듈은 아차피 프로세스 안에서 혹은 아파치 와 통신하기 위해 분리된 프로세스 안에서 파이썬 코드를 실행한다.
Comments