Web 服务器的后台发生了什么?
What happen in the background on a web server?
我刚开始使用 Python 和 Flask 框架学习后端 Web 开发。
我的第一个应用程序是最简单的一个,它returns"Hello World!"当用户发送网站主页请求时。
下面,您可以看到我的应用程序的结构:
myWebsiteDirectory/
app/
__init__.py
setup.py
wsgi.py
下面是 python 个文件的内容:
setup.py
from setuptools import setup
setup(name='YourAppName',
version='1.0',
description='OpenShift App',
author='Your Name',
author_email='example@example.com',
url='http://www.python.org/sigs/distutils-sig/',
install_requires=['Flask>=0.10.1'],
)
wsgi.py
#!/usr/bin/python
import os
#virtenv = os.environ['OPENSHIFT_PYTHON_DIR'] + '/virtenv/'
virtenv = os.path.join(os.environ.get('OPENSHIFT_PYTHON_DIR','.'), 'virtenv')
virtualenv = os.path.join(virtenv, 'bin/activate_this.py')
try:
execfile(virtualenv, dict(__file__=virtualenv))
except IOError:
pass
#
# IMPORTANT: Put any additional includes below this line. If placed above this
# line, it's possible required libraries won't be in your searchable path
#
from app import app as application
#
# Below for testing only
#
if __name__ == '__main__':
from wsgiref.simple_server import make_server
httpd = make_server('localhost', 8051, application)
# Wait for a single request, serve it and quit.
httpd.serve_forever()
__init__.py
from flask import Flask
app = Flask(__name__)
app.debug = True
@app.route('/')
def not_again():
return 'Hello World!'
if __name__ == '__main__':
app.run(host='0.0.0.0', debug=True)
我的问题是什么:
当我将此文件上传到服务器时会发生什么?当用户请求我的网站时会发生什么?
换句话说:
- 当Python解释服务器上的上述文件的每一个? (每个文件解释多少次)?
- 当用户发送请求时会发生什么? His/Her 请求重新解释文件或请求引用 运行 函数作为参数?如果是这样,服务器上不应该有一个无限循环来捕获请求吗?如果是这样,那个无限循环在哪里?
- 当 Web 服务器尚未完成上一个请求时用户发送请求时会发生什么情况?那些 argument/script refers/interpret 再次在这个新用户的单独环境中或 he/she 必须等待服务器完成对先前请求的回答?
再一次,换句话说:
- 网络服务器如何处理用户的请求?
虽然上面的问题是基于Python&Flask web framework web developing,但是对于所有的语言和框架都有一个通用的机制,请告诉我通用的过程而不是这个具体案例。
如果您对网络服务器的工作原理不太了解,既然您对 Python 感兴趣,我建议您阅读:
- http://ruslanspivak.com/lsbaws-part1/
- http://ruslanspivak.com/lsbaws-part2/
- http://ruslanspivak.com/lsbaws-part3/
如果有兴趣逐步了解如何使用 Python 网络框架来构建网站,那么也可以考虑阅读:
这是一个很好的基本介绍,可以让人们继续前进。
这些将为您提供工作的基础知识。特定的 WSGI 服务器或服务提供商的工作方式可能会有所不同,但您首先通过上述工作将能够更好地理解。
我刚开始使用 Python 和 Flask 框架学习后端 Web 开发。
我的第一个应用程序是最简单的一个,它returns"Hello World!"当用户发送网站主页请求时。
下面,您可以看到我的应用程序的结构:
myWebsiteDirectory/
app/
__init__.py
setup.py
wsgi.py
下面是 python 个文件的内容:
setup.py
from setuptools import setup
setup(name='YourAppName',
version='1.0',
description='OpenShift App',
author='Your Name',
author_email='example@example.com',
url='http://www.python.org/sigs/distutils-sig/',
install_requires=['Flask>=0.10.1'],
)
wsgi.py
#!/usr/bin/python
import os
#virtenv = os.environ['OPENSHIFT_PYTHON_DIR'] + '/virtenv/'
virtenv = os.path.join(os.environ.get('OPENSHIFT_PYTHON_DIR','.'), 'virtenv')
virtualenv = os.path.join(virtenv, 'bin/activate_this.py')
try:
execfile(virtualenv, dict(__file__=virtualenv))
except IOError:
pass
#
# IMPORTANT: Put any additional includes below this line. If placed above this
# line, it's possible required libraries won't be in your searchable path
#
from app import app as application
#
# Below for testing only
#
if __name__ == '__main__':
from wsgiref.simple_server import make_server
httpd = make_server('localhost', 8051, application)
# Wait for a single request, serve it and quit.
httpd.serve_forever()
__init__.py
from flask import Flask
app = Flask(__name__)
app.debug = True
@app.route('/')
def not_again():
return 'Hello World!'
if __name__ == '__main__':
app.run(host='0.0.0.0', debug=True)
我的问题是什么:
当我将此文件上传到服务器时会发生什么?当用户请求我的网站时会发生什么?
换句话说:
- 当Python解释服务器上的上述文件的每一个? (每个文件解释多少次)?
- 当用户发送请求时会发生什么? His/Her 请求重新解释文件或请求引用 运行 函数作为参数?如果是这样,服务器上不应该有一个无限循环来捕获请求吗?如果是这样,那个无限循环在哪里?
- 当 Web 服务器尚未完成上一个请求时用户发送请求时会发生什么情况?那些 argument/script refers/interpret 再次在这个新用户的单独环境中或 he/she 必须等待服务器完成对先前请求的回答?
再一次,换句话说:
- 网络服务器如何处理用户的请求?
虽然上面的问题是基于Python&Flask web framework web developing,但是对于所有的语言和框架都有一个通用的机制,请告诉我通用的过程而不是这个具体案例。
如果您对网络服务器的工作原理不太了解,既然您对 Python 感兴趣,我建议您阅读:
- http://ruslanspivak.com/lsbaws-part1/
- http://ruslanspivak.com/lsbaws-part2/
- http://ruslanspivak.com/lsbaws-part3/
如果有兴趣逐步了解如何使用 Python 网络框架来构建网站,那么也可以考虑阅读:
这是一个很好的基本介绍,可以让人们继续前进。
这些将为您提供工作的基础知识。特定的 WSGI 服务器或服务提供商的工作方式可能会有所不同,但您首先通过上述工作将能够更好地理解。