关于 Python 的一个多线程的诡异的异常

18870715400

代码的链接

https://gist.github.com/GandalfLiu/bfa270cbd9dd0297e4c871f5cbb4c7fc

错误异常,当同时执行的任务超过 3 个比如 4 个的时候, 这时候会发生在代码逻辑之外的错误

当有四个任务加入队列中的时候, 如 1, 2, 3, 4
前面 1 和 2 号任务正常执行, 产生对应的结果 1 和 结果 2
但是第 3 个这时候会直接先产生 2 个错误结果,数据库中确认已经产生了, 
然后执正常执行任务 4 并且产生结果, 然后又会再次去执行任务 3, 并且正常执行然后产生结果, 这时候就会有 6 个结果, 4 个成功的结果, 还有对应的任务 3 的两个失败结果


诡异分析:
1. 日志记录的挺详细的, 但是其中没有发现任务错误, 任务 3 会无缘无故的产生 2 个错误的结果, 但是里面找不到任何错误记录
2. 按照正常情况, 任务 3 第一次失败了之后就应该更改对应的数据库的任务 status 为 2, 该任务就不会加入到队列中了, 但是实际情况后面还是会继续执行一次, 然后继续失败, 然后再执行一次然后成功, 然后执行的任务状态就被更改为 3 了.但是执行失败的情况找不到任何的失败日志记录, 数据库记录日志找不到任何错误.
3. 当同时执行任务的次数小于 3 个的时候,正常逻辑运行, 就是超过 3 个出问题

controller.py 文件和 logic.py 文件应该没有啥问题, 目测问题主要在多线程上面, 查了好几天, 有大神帮忙看看多线程的代码哪里出问题了么?
Python 如何查某关键词在百度网页第几页?

cizimo:例如,在百度搜索 XXX 关键词后,想知道包含 YYY 的词在搜索结果的第几页? 这个能做到吗? 或者说有没有教程,砸一个链接给我呗,谢谢大家啦

Python 有没有监听鼠标点击网页相关元素的包呢?

18870715400:具体需求 比如说打开了 www.baidu.com ,当你鼠标点击了“百度一下”就可以获得这个对应的 id 或者是对应的 xpath 语法 如果没有对应的包,那么有什么可以具体实现的思路呢?

Python 现在最好用的包管理是啥?

maichael:最近为了给测试搭自动化测试,重新开始搞起 Python,但是整体工程结构比较苦恼。 重点是版本管理,requirements.txt 感觉不怎么好用。Pipenv? Tox? 还是其它的啥? 以及像 package.json 里 scripts 的用法,python 有类似的吗?cdyrhh:poetry

关于 iap,我想替苹果说句话

di94sh:iap 抽成的确很高,但是如果你的 app 中有订阅功能的话你就会觉得 iap 虽然难用,但最起码能用. 安卓开发者如果想增加订阅功能简直不要太难,微信 支付宝需要企业有一定资质才能去申请委托代扣,而且申请流程极其繁琐.订阅功能对于卖会员的 app 来说极其重要,我做的产品中按月续订次月留存高达 70%多.而普通的月卡留存非常非常的低

Python 如何优雅地处理子线程异常?

Te11UA:目前比较多的做法还是如下,出于担心未知异常、没有记录日志就退出子线程的情况下,在函数用一个大的 try-except 来进行 handle,或者是将主要逻辑放到 test_sth 中,使用 try-except 来捕获: def run(): try: test_sth() ... except Exception: log_exception…