萌新在写网站的发送邮件验证,为了防止用户滥发,所以加了权限。前端简单地disable按钮一刷新就没了,纯粹视觉提示作用,所以在后端models里为user加了一个resend_right,当为True时才能重新发送,False不行。

所以在models里,user模型有一个column是这样的(SQLAlchemy):

resend_right = db.Column(db.Boolean, default=True)

当然前端是等待60秒后可以重新发送,所以后端也计时60秒后重新赋值True给resend_right。我就想这种等待性IO/数据库读取录入等操作当然是多线程处理。

所以我写了resend_right权限重置的方法:

def async_reset(app, user):

with app.app_context():

time.sleep(55)

user.resend_right = True

def resend_right_reset(user):

app = current_app._get_current_object()

thr = Thread(target=async_reset, args=[app, user])

thr.start()

return thr

然后在views的路由函数里面调用它:

# Resend confirmation email route, need to be protected

@auth.route('/resend_email/')

@login_required

def resend_confirmation():

mail_host ='http://mail.' + re.split('@', current_user.email)[1]

if not current_user.resend_right:

flash("请不要尝试刷新页面来短时间内重复发送验证邮件,你可以在一分钟后再试")

return render_template('auth/confirm.html',user=current_user, mail_host=mail_host)

token = current_user.generate_confirmation_token()

.........

结果无效,所以我测试了一下,发现路由函数无问题,resend_right_reset无问题。假如我把user.rend_right=True写进resend_right_reset是能够正常运作的,但一旦用多线程来处理就始终无法重置。然后我分析,多线程这里用了current_app._get_current_object()获取全局对象,然后app.app_context()拿到了上下文导入到多线程里,应该就没问题了。但为什么不行?

求教,非常感谢!

python多线程处理数据库_在flask框架下利用Python的threading或thread多线程库如何操作数据库?...相关推荐

  1. python没有联网_无网环境下的 Python 开发指南

    说起有关 Python 的指南,便一定得提到 K 神创建的『Python最佳实践指南』,英文名字是『The Hitchhiker's Guide to Python!』.毫不夸张地说,K 神创建的指南 ...

  2. 业余学Python是如何挣钱的?总结下利用Python赚外快的方法,闲余时间2k~5k

    关于Python,还有一个问题大家伙比较感兴趣的:如何利用Python赚钱? 这里总结了一些用Python赚外快的方式,大家伙可以自己去尝试一下. Python兼职分为以下三种: 商家提供接口爬取数据 ...

  3. python 修改文件名_【学习分享】利用python批量修改文件名

    1 前言 分享一个利用python批量修改文件名的方法,我们以前分享过用DOS命令来批量修改文件名,但是如果要修改多个文件夹内的文件名,用DOS命令就不好处理了,我们就来分享一下如何用python处理 ...

  4. python网络爬虫_一篇文章教会你利用Python网络爬虫获取穷游攻略

    点击上方"IT共享之家",进行关注 回复"资料"可获赠Python学习福利 [一.项目背景] 穷游网提供原创实用的出境游旅行指南.攻略,旅行社区和问答交流平台, ...

  5. 利用python爬取_在知乎上利用Python爬取了三百万数据!服务器崩了!企业级大项目...

    请各位注意: 以下所有分析结果都基于我抓取到的这300万用户的个人信息,非权威分析,仅供参考. 数据抓取时间为2017年7月份,用户数据会随着时间推移而变化,所以该报告具有一定时效性. 知乎的用户个人 ...

  6. 如何用python做后端写网页-flask框架

    如何用python做后端写网页-flask框架 什么是Flask 安装flask模块 Hello World 更深一步:数据绑定 后端传入数据 从前端获取数据 数据库连接 screen 创建后台 查看 ...

  7. python自动化从零开始_从零开始学Selenium自动化测试:基于Python:视频教学版

    前言 第1章 自动化测试基础 1.1 自动化测试简介 1.1.1 自动化测试的定义 1.1.2 自动化测试与手工测试的关系 1.1.3 何时开展自动化测试 1.1.4 自动化测试的优势 1.1.5 自 ...

  8. matlab 随机森林算法_(六)如何利用Python从头开始实现随机森林算法

    博客地址:https://blog.csdn.net/CoderPai/article/details/96499505 点击阅读原文,更好的阅读体验 CoderPai 是一个专注于人工智能在量化交易 ...

  9. springboot框架下利用websocket实现即时通讯

    springboot框架下利用websocket实现即时通讯(文章末尾有git项目打包文件,直接下载使用即可) 用websocket实现简单的在线聊天,先画个时序图,直观感受下流程 SystemCon ...

最新文章

  1. js中replace未定义_js中replace的用法
  2. java - 线程1打印1-10,当线程打印到5后,线程2打印“hello”,然后线程1继续打印...
  3. fiddler不能抓取浏览器数据_抓包软件 Fiddler 了解一下?
  4. 读《李商隐诗集》有感
  5. linux脚本的数据输出到excel,使用shell实现Excel表格导出功能 | 剑花烟雨江南
  6. cmd的rd命令简单解析
  7. 双指针 - 四数之和
  8. 英特尔固态硬盘540s开卡_英特尔Z490主板绝配?技嘉PCIe 3.0 x8固态硬盘测试:6.5GB/s读速...
  9. 【vue】路由Router基础详解,带你快速入门~
  10. 安卓 App 库存系统开发 基础版本
  11. web工程本地跟tomcat部署导致根路径不一致问题
  12. 空卡安装设置树莓派4B并安装opencv+QT
  13. hdu2089 不要62
  14. break;continue语句
  15. ios系统软件迁移到安卓_苹果系统怎么把文件转到安卓手机?
  16. C++ 多线程系统编程精要
  17. 万字长文:AWS如何跨越“鸿沟”
  18. Win10系统文件夹被设为只读,取消Word文件的只读模式
  19. 关于linux fc多路径巡检
  20. 计算机视觉、图像处理学习资料汇总(转)

热门文章

  1. 计算机视觉:基于YOLO-V3林业病虫害目标检测
  2. AI识虫:林业病虫害数据集和数据预处理方法
  3. Leecode之翻转整数
  4. Java对象间的转化
  5. sqlplus配置连接mysql_如何配置和使用iSQL*Plus
  6. camunda流程引擎如此简单(二)
  7. echarts设置折线图属性
  8. Nginx+PHP-FPM——Nginx日志:[Primary script unknown] 网页:[file not found. ]解决方案
  9. [USACO4.2]完美的牛栏The Perfect Stall
  10. python挖长尾词 源码,如何用代码挖局长尾关键词