flask的信号使用



from blinker import Namespace
from datetime import datetime
from flask import request namespace = Namespace() login_signals = namespace.signal('login') def login_log(sender,username):
#一般实际开发中,要记录用户名,登录时间,用户ip
login_time = datetime.now()
user_ip = request.remote_addr #获取远程用户的ip地址
log_line = '{username}*{user_ip}*{login_time}'.format(username=username,user_ip=user_ip,login_time=login_time) with open('login.txt','a') as fp:
fp.write(log_line+'\n') login_signals.connect(login_log)#监听这个函数
from flask import Flask,request
from signals import login_signals
from blinker import Namespace #信号 # namespace = Namespace()#实例化一个对象
# fire_signal = namespace.signal('fire') #定义一个信号
#
#
# #监听信号
# def fire_bullet(sender):
# print(sender)
# print('start fire bullet')
#
# fire_signal.connect(fire_bullet)#监听这个信号,有信号就执行这个函数
#
#
# #发送一个信号
# fire_signal.send() #实际情况使用场景:定义一个登录的信号,以后用户登录进来以后
#就发送一个登录信号,然后能够监听这个信号
#在监听到这个信号以后,就记录当前这个用户登录的信息
#用信号的方式,记录用户的登录信息 app = Flask(__name__) @app.route('/')
def hello_world():
return 'hello_world' @app.route('/login/')
def login():
#同过查询字符串的方式来传递username这个参数
username = request.args.get('username')
if username:
login_signals.send(username=username)#发送信号,可以携带参数
return '登录成功'
else:
return '请输入用户名' if __name__ == '__main__':
app.run()
flask的信号使用的更多相关文章
- Inside Flask - signal 信号机制
Inside Flask - signal 信号机制 singal 在平常的 flask web 开发过程中较少接触到,但对于使用 flask 进行框架级别的开发时,则必须了解相关的工作机制.flas ...
- Django 的信号 & Flask 的信号
信号:框架内部已帮助开发者预留的可扩展的位置 一.Django 的信号 项目目录结构: django_signal |--- app01 |--- models.py |--- views.py .. ...
- 5、flask之信号和mateclass元类
本篇导航: flask实例化参数 信号 metaclass元类解析 一.flask实例化参数 instance_path和instance_relative_config是配合来用的:这两个参数是用来 ...
- flask之信号和mateclass元类
本篇导航: flask实例化参数 信号 metaclass元类解析 一.flask实例化参数 instance_path和instance_relative_config是配合来用的:这两个参数是用来 ...
- flask框架----信号
一.实例化补充 instance_path和instance_relative_config是配合来用的.这两个参数是用来找配置文件的,当用app.config.from_pyfile('settin ...
- flask之信号
Flask框架中的信号基于blinker,其主要就是让开发者可是在flask请求过程中定制一些用户行为. pip3 install blinker 1. 内置信号 request_started = ...
- 【Flask】Flask常用信号
使用信号分为3步,第一是定义一个信号,第二是监听一个信号,第三是发送一个信号. 1. 定义信号:定义信号需要使用到blinker这个包的Namespace类来创建一个命名空间.比如定义一个在访问了某个 ...
- Inside Flask - flask.__init__.py 和核心组件
Inside Flask - flask.__init__.py 和核心组件 简单的示例 首先看看一个简单的示例.使用 Flask ,通常是从 flask 模块导入 Flask . request 等 ...
- Flask源码流程剖析
在此之前需要先知道类和方法,个人总结如下: 1.对象是类创建,创建对象时候类的__init__方法自动执行,对象()执行类的 __call__ 方法 2.类是type创建,创建类时候type的__i ...
随机推荐
- H - Almost Union-Find
//带删除操作的并查集 //题意:给你一个1~n的集合,有三种操作 // 1: 把p和q所在的集合合并 //2:把p移到q所在的集合中 //3:返回p所在集合中的元素个数和元素的和 //第二种操作不能 ...
- redis系列(五):搭建redis-cluster集群
1.为什么要用redis-cluster a.并发要求 redis官方声称可以达到10万每秒,但是如果业务需要每秒100万条呢?b.数据量太大 一台服务器的内存正常是16-256G,如果业务需要500 ...
- fedora安装设置
添加视频解码rpmfusion源: sudo rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-st ...
- CODE FESTIVAL 2016 Final 题解
传送门 \(A\) 什么玩意儿-- const char c[]={"snuke"}; char s[15];int n,m; int main(){ scanf("%d ...
- (26)打鸡儿教你Vue.js
weex框架的使用 1.weex开发入门 2.weex开发环境搭建 3.掌握部分weex组件模块 4.了解一些vue基本常见语法 5.制作一个接近原生应用体验的app weex介绍 安装开发环境 We ...
- golang-flag - 命令行参数解析
flag - 命令行参数解析 在写命令行程序(工具.server)时,对命令参数进行解析是常见的需求.各种语言一般都会提供解析命令行参数的方法或库,以方便程序员使用.如果命令行参数纯粹自己写代码解析, ...
- UOJ#339. 【清华集训2017】小 Y 和二叉树 贪心
原文链接 www.cnblogs.com/zhouzhendong/p/UOJ339.html 前言 好久没更博客了,前来更一发. 题解 首先,我们考虑一个子问题:给定根,求出最小中序遍历. 如果根节 ...
- Alpha(2/6)
队名:無駄無駄 组长博客 作业博客 组员情况 张越洋 过去两天完成了哪些任务 任务分配.进度监督 提交记录(全组共用) 接下来的计划 沟通前后端成员,监督.提醒他们尽快完成各自的进度 还剩下哪些任务 ...
- Linux下的crontab定时执行任务命令
0x00 简介 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间. cron的 ...
- 迁移mysql数据位置
查看位置: show variables like '%datadir%'; /var/lib/mysql