flask05
2018-10-20 本文已影响0人
fly5
一、flask-debugtoolbar
- 官网
http://www.pythondoc.com/flask-debugtoolbar/index.html
- 安装
$ pip install flask-debugtoolbar
-配置
app.debug = True
app.config['SECRET_KEY'] = '<replace with a secret key>'
toolbar = DebugToolbarExtension(app)
- 使用
只要app.debug = True在模板中会显示调试工具栏!
二、flask-caching
- 问题
flask-cache
flask-caching【推荐】
备注:除了导包不同,操作都是一致的!!
- 安装
$ pip install Flask-Cache
或
$ pip install Flask-Caching
- 配置
cache = Cache(config={'CACHE_TYPE':'simple'})
cache.init_app(app)
- 使用
# 缓存视图函数
@cache.cached(timeoyut=30)
- 其他配置
CACHE_TYPE
null:无缓存
simple:本地Python字典存储
memcached:使用MemcachedCache作为缓存后端
gaememcached:使用GAEMemcachedCache作为缓存后端
redis:使用RedisCache作为存储后端
filesystem:使用FileSystem作为缓存
saslmemecached:使用SASLMemcachedCache作为缓存
RedisCache - redis配置
CACHE_DEFAULT_TIMEOUT 超时时间
CACHE_KEY_PREFIX cache_key前缀(key-value)
CACHE_REDIS_HOST redis主机
CACHE_REDIS_PORT redis端口号
CACHE_REDIS_PASSWORD redis密码
CACHE_REDIS_DB redis数据库序号
CACHE_REDIS_URL redis链接URL
CACHE-ARGS 缓存时传递的参数列表
CACHE_OPTIONS 选项(传递参数的作用)
- 其他作用
cache.set('name','atom',timeout=60)
name = cache.get('name')
cache.clear()
三、反爬策略
- 基本反爬策略
- 黑白名单,直接拦截
- 频繁操作,直接拦截
- 不是浏览器发起的请求,直接拦截
四、请求钩子
- 请求钩子
- before_first_request 第一次请求之前处理
- before_request 每次请求之前处理
- after_request 每次请求之后处理(没有异常)
- teardown_request 每次请求之后处理(不管有没有异常)
@blue.before_request
def before():
# key
key = 'ip:' + request.remote_adddr
# 获取值
value = cache.get(key)
# 判断处理
if value: # 直接拦截
return '虫子'
else: # 第一次访问,通过
cache.set(key,'虫子',timeout=3)
五、flask内置对象
- flask内置对象
request 请求
session 会话技术
config 配置
g
- g
数据传递的新方式
突破变量存储位置限制