信号使用场景
- 定义一个登录的信号
- 用户登录进来就发送一个登录信号,然后能够监听这个信号
- 在监听到这个信号以后,就记录当前这个用户登录的信息
- 用信号的方式,记录用户的登录信息即登录日志
具体实现
创建登陆信号,以及监听
from blinker import Namespace
from datetime import datetime
from flask import request,g
#创建登录信号
namespace = Namespace()
login_signal = namespace.signal('login')
def login_log(sender):
# 用户名 登录时间 ip地址
now = datetime.now()
ip = request.remote_addr
log_data = "{uname}*{now}*{ip}".format(uname=g.uname, now=now, ip=ip)
with open('login_log.txt','a') as f:
f.write(log_data + "\n")
f.close()
#监听信号
login_signal.connect(login_log)
使用信号存储用户登录日志
from flask import Flask,request,g
from signals import login_signal
app = Flask(__name__)
@app.route('/login/')
def login():
# 通过查询字符串的形式来传递uname这个参数
uname = request.args.get('uname')
if uname:
g.uname = uname
# 发送信号
login_signal.send()
return '登录成功!'
else:
return '请输入用户名!'
if __name__ == '__main__':
app.run(debug=True)