Flask开发 经验技巧总结

CuterCorley 等级 324 0 0

Flask作为一个主流的Python Web框架之一,有比较广泛的应用,但是有经验的小伙伴可能知道,这里边其实也有很多坑,让你不得不防,在使用的过程中可以积累一些经验。

1.Flask中的Referer不是referer

做过爬虫的小伙伴都知道,referer是指页面的跳转,即从哪一个页面跳转到当前页,很多网站也通过该属性对爬虫采取了一定的限制。在Flask中也有referer这个概念,意义也相同,但是写法就变了,变成了referrer,你可得注意啦,多了一个r!!!

2.为视图访问增加计时器

有的时候,我们会有这种需求,在网页中显示该网页的访问数量,此时就需要增加计时器,但是一般的计时器会存在一些问题: (1)WSGI服务器会将Flask服务生成多个进程,每个进程都有自己的独立副本,重复的请求会由不同的进程处理,从而产生不同步的值; (2) 假如Flask服务异常终止,计数就会清零。

此时可以按照如下方法解决: (1)multiprocessing模块; (2)保存到数据库中。

第一种方式原理为: 使用Python自带库multiprocessing.Value,只要在创建值后生成进程,就可以跨进程同步对共享值的访问,如下:

from flask import Flask, jsonify
from multiprocessing import Value

counter = Value('i', 0)
app = Flask(__name__)

@app.route('/')
def index():
    with counter.get_lock():
        counter.value += 1

    return jsonify(count=counter.value)

app.run(processes=8)

此时可以实现同步计时,但是如果应用程序进程分布在多台计算机上,则共享内存也会存在问题:它们仅在本地计算机上同步,而不是在网络上同步。

最可靠的还是直接将计数保存到数据库,对于访问路由对应的对象模型增加一个字段,每访问一次就操作数据库,对该字段加一,这样就不存在上面的问题了。

本文原文首发来自博客专栏Python Web开发实战,由本人转发至https://www.helloworld.net/p/7RBT9YtZwfjG,其他平台均属侵权,可点击https://blog.csdn.net/CUFEECR/article/details/106955224查看原文,也可点击https://blog.csdn.net/CUFEECR浏览更多优质原创内容。

收藏
评论区

相关推荐

Python全栈(七)Flask框架之1.Flask简介与URL和视图介绍
一、虚拟环境介绍 1.虚拟环境与全局环境 有时候安装了一个Python库,可能在IDE如PyCharm中不能使用,这是因为: 通过pip安装的库默认一般在全局环境中,而PyCharm一般会默认创建虚拟环境,所以两者的环境不一致,导致安装的包不能正常导入使用,解决办法有2种: 在PyCharm虚拟环境中安装库,使库位于虚拟环境中 将PyCharm的环
Python全栈(八)Flask项目实战之1.项目搭建
video(video2jwWp5501589937184219)(typebilibili)(urlhttps://player.bilibili.com/player.html?aid883233031)(imagehttps://ss.csdn.net/p?http://i0.hdslb.com/bfs/archive/bb74ff315
Flask开发 经验技巧总结
Flask作为一个主流的Python Web框架之一,有比较广泛的应用,但是有经验的小伙伴可能知道,这里边其实也有很多坑,让你不得不防,在使用的过程中可以积累一些经验。 1.Flask中的Referer不是referer 做过爬虫的小伙伴都知道,referer是指页面的跳转,即从哪一个页面跳转到当前页,很多网站也通过该属性对爬虫采取了一定的限制。在Flas
Python Flask 框架使用及常见异常处理
1.jinja2.exceptions.TemplateNotFound出错 如图, 示例(https://imghelloworld.osscnbeijing.aliyuncs.com/851ef735dfc6426c04797c8f07ab877f.png) 文件夹(https://imghelloworld.osscnbei
Flask开发 经验技巧总结
Flask作为一个主流的Python Web框架之一,有比较广泛的应用,但是有经验的小伙伴可能知道,这里边其实也有很多坑,让你不得不防,在使用的过程中可以积累一些经验。 1.Flask中的Referer不是referer做过爬虫的小伙伴都知道,referer是指页面的跳转,即从哪一个页面跳转到当前页,很多网站也通过该属性对爬虫采取了一定的限制。在Flas
每日一题(四)
写在前面 寒假重启每日一题计划,这回想挑战一些以前打得比较少的知识,比如SSRF、SSTI、JSON/COOKIE伪造、JS原型链污染等等,所以冲就完事了! [FBCTF2019]Event初见是一个登录框,其中Admin panel目录提示需要先登录试了一些 sql 注入的万能密码,没用,常规登录后Admin panel提示需要成为管理员Event pan
每日一题(五)
写在前面继续努力 [CISCN2019 华东南赛区]Double Secret进来一句话,做题全靠猜web 题,直接去/secret目录这句话提到了发送 secret 过去,会有 encrypt加密,get 一个 secretadmin123过去直接进报错,又是 flask发现可疑的源码泄露点pythonif(secretNone): return '
Frida + AndroidAsync 实现 RPC
一、目标我们在之前的教程里面使用 python的Flask库启动一个web Server 来实现App函数的RPC调用。今天我们介绍一个新盆友,AndroidAsync, 用AndroidAsync来启动web Server,这样frida就直接搞定,不需要再请Python来帮忙了。 二、步骤 AndroidAsyncAndroidAsync的详细介绍大家可
Flask--如何在pycharm中导入并运行flask项目
一.导入flask项目FileOpen选择需要导入flask项目(如项目名为flasky)。 二.设置解释器FileSettingsProject Interpreter,如下图所示三.添加Flask server1.点击pycharm右上角的Add Configuration2.点击+号,选择Flask Server3.填写参数4.运行项目点击pychar
小白学习python该往哪方面走小白必看
整理了Python的7大就业方向,希望大家能找到适合自己的,然后学习下去,完成人生的目标。1、Web开发(Python后端)Python有很多优秀的Web开发框架,如Flask、Django、Bootstar等,可以帮助你快速搭建一个网站。当需要一个新功能时,用Python只需添加几行代码即可,这受到了很多初创型公司的一致欢迎。像知乎、豆瓣、小米这样的大厂,
手把手教你使用Flask搭建ES搜索引擎(实战篇)
上一篇简单说了下 ES 在 Python 的增删改查,。 现在正式进入主题:开始使用 Flask 搭建 ES 搜索。 1 配置文件 Config.pycoding:utf8 import os DBUSERNAME  'root' DBPASSWORD  None  如果没有密码的话 DBHOST  '127.0.0.1' DB
手把手教你使用Flask搭建ES搜索引擎(预备篇)
/1 前言/ Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 那么如何实现 Elasticsearch和 Python 的对接成为我们所关心的问题了 (怎么什么都要和 Python 关联啊)。 /2 Python 交互/ 所以,Python 也就提供了可以对接 Elasti
小伙Python爬虫并自制新闻网站,太好玩了
大家好,我又来了,我是银牌厨师豆腐! 我们总是在爬啊爬,爬到了数据难道只是为了做一个词云吗?当然不!这次我就利用flask为大家呈现一道小菜。Flask是python中一个轻量级web框架,相对于其他web框架来说简单,适合小白练手。使用Flask+爬虫,教大家如何实时展示自己爬下来的数据到网页上。先给大家展示一下这个丑丑的网页 ↓(给个面子,别笑)演示三
盘点Python网页开发轻量级框架Flask知识(上篇)
前言今天来给大家说一个Python的轻量级web开发框架Flask,为什么要推荐它呢?当然是因为它够轻量级了,开发迅速是它的特点,当然它也有缺点,不过这里不说,因为既用它又说它差感觉不好。一、安装flaskpip install flask 需要注意的是,还有flake,那个是检查错误的模块,不要搞混了可以看到成功了,总共下载了四个模块,分别是对应的web开
盘点Python网页开发轻量级框架Flask知识(下篇)
前言今天来给大家说一个Python的轻量级web开发框架Flask,为什么要推荐它呢?当然是因为它够轻量级了,开发迅速是它的特点,当然它也有缺点,不过这里不说,因为既用它又说它差感觉不好。上篇文章我们说了一半的内容,,这篇文章继续补全剩下的一半内容,一起来学习下吧 11.request操作这是一个专门用来操作网页请求的模块,今天我们围绕这个来具体讲解。