扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这篇文章主要介绍“python上怎么启动web服务”,在日常操作中,相信很多人在python上怎么启动web服务问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python上怎么启动web服务”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
目前成都创新互联已为千余家的企业提供了网站建设、域名、网络空间、成都网站托管、企业网站设计、武乡网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
导入flask中的Flask模块后使用Flask初始化web服务对象app = Flask(__name__)
这个app
就是web服务的对象,接下来只要调用app.run()
方法就可以启动web服务器了,就是这么简单
启动log如下
/home/yukiti2007/anaconda3/envs/tf2/bin/python /home/yukiti2007/IdeaProjects/sample/python/flask/router.py * Serving Flask app "router" (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
可以看出flask默认是在5000
端口启动web服务的
从log中的警告可以看出,这种启动方式只是在开发阶段使用,不推荐在生产环境中使用
如果是生产环境,建议使用WSGI server启动服务
app.run()
方法有5个参数
参数名 | 意义 | 默认值 |
---|---|---|
host | 监听的主机ip地址 | 127.0.0.1(localhost) |
port | web服务启动端口 | 5000 |
debug | 是否以debug模式启动 | None |
load_dotenv | 是否加载环境变量,默认会加载以.env 和.flaskenv 结尾的文件 | True |
options | 其他选项(因为flask底层是通过Werkzeug实现的,所以这些选项会传递给Werkzeug,详细信息需要查看werkzeug.serving.run_simple方法) | - |
如果不想使用5000
端口启动服务,只需要加上参数prot=8080
就可以以8080
端口启动服务了
另外,由于默认的监听ip地址是127.0.0.1
,所以启动的服务只能本机访问
如果需要在其他机器上也能访问,需要将监听端口设为0.0.0.0
下面以以下参数启动服务app.run(host="0.0.0.0",port=8080,debug=True)
,启动log如下
/home/yukiti2007/anaconda3/envs/tf2/bin/python /home/yukiti2007/IdeaProjects/sample/python/flask/router.py * Serving Flask app "router" (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: on * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger PIN: 249-050-533
flask添加路由有2种方式
使用装饰器route()
使用函数add_url_rule()
下面我们使用两种方式添加两个路由试试
# 在方法上添加装饰器 @app.route("/hello1") def hello_world1(): return "hello_world1" # 使用函数添加 def hello_world2(): return "hello world2" app.add_url_rule("/hello2", view_func=hello_world2)
访问成功,同时也自动打印了访问log
192.168.140.1 - - [08/Aug/2019 16:23:30] "GET /hello2 HTTP/1.1" 200 - 192.168.140.1 - - [08/Aug/2019 16:23:39] "GET /hello1 HTTP/1.1" 200 -
但是这样添加的路由只支持GET方式的请求,通过POST方式访问的话会拒绝响应
192.168.140.1 - - [08/Aug/2019 16:33:26] "POST /hello1 HTTP/1.1" 405 - 192.168.140.1 - - [08/Aug/2019 16:33:44] "POST /hello2 HTTP/1.1" 405 -
可以通过添加method
的方式来制定响应请求的Method
# 装饰器方式 @app.route("/hello1", methods=["GET", "POST"]) # 使用函数方式 app.add_url_rule("/hello2", view_func=hello_world2, methods=["GET", "POST"])
重启服务以后再次以POST
方式尝试访问,响应成功
192.168.140.1 - - [08/Aug/2019 16:40:29] "POST /hello1 HTTP/1.1" 200 - 192.168.140.1 - - [08/Aug/2019 16:40:50] "POST /hello2 HTTP/1.1" 200 -
完整代码已经上传到github
到此,关于“python上怎么启动web服务”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流