在Web服务器的后台发生了什么?

时间:2015-07-06 19:05:11

标签: python web-services flask webserver web-frameworks

我刚刚开始使用Python和Flask框架学习后端Web开发。

我的第一个应用程序是最简单的应用程序,当用户发送网站主页请求时,它会返回“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()

__初始化__。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)

我的问题是什么:

当我在服务器上传文件时会发生什么情况以及当用户请求我的网站时会发生什么?

换句话说:

  1. 当Python解释服务器上的每个上述文件时? (每个文件解释多少次?)
  2. 用户发送请求时会发生什么?他/她的请求是否重新解释了文件,或者请求将运行函数作为参数?如果是这样,服务器上是否应该有一个无限循环来捕获请求?如果是这样,那无限循环在哪里?
  3. 当用户在Web服务器未完成上一个请求时发送请求时会发生什么?那些参数/脚本在这个新用户的单独环境中再次引用/解释,或者他/她必须等待服务器完成回答上一个请求?
  4. 再一次,换句话说:

    • 用户的请求如何处理网络服务器?

    虽然上述问题是基于Python& Flask web框架web开发,但它有一个通用的机制,所有的语言和框架,请让我知道一般程序,而不是这个特定的情况。

1 个答案:

答案 0 :(得分:2)

如果您对Web服务器的工作方式不太了解,因为您对Python感兴趣,我建议您阅读:

如果有兴趣那么用Python Web框架做一些事情来构建一个网站,那么还要考虑阅读:

这是让人们前进的一个很好的基本介绍。

这些将为您提供基础知识。具体的WSGI服务器或服务提供商的工作方式可能会有所不同,但通过以上工作,您将能够更好地理解。