https://gist.github.com/GandalfLiu/bfa270cbd9dd0297e4c871f5cbb4c7fc
当有四个任务加入队列中的时候, 如 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 文件应该没有啥问题, 目测问题主要在多线程上面, 查了好几天, 有大神帮忙看看多线程的代码哪里出问题了么?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.