多进程的坑记录( 不定时更新)

1. 业务逻辑导致的死锁

这个是最常见的了,不过只要把逻辑梳理好,就不容易出现这个情况,不过注意:最好不要手动的定义一个变量,来判断是否需要用到同步锁。

  • 比如:定义一个变量needLockFunchas_lock_func这种,然后防止死锁时判断这个变量是True或False,后续的逻辑中有用到的地方,然后判断变量,需要时手动设置为True,用完设置为False。阶段性的编码结束后,大概率就把这种变量忘啦!纯粹给自己挖坑啊

2. 子进程找不到变量

子进程里各种父进程中定义的变量都是没有的,通常会把子进程写成函数,然后多进程运行这个函数,可以避免很多错误,但是仍旧有些地方需要注意:

  • 比如用到了自定义的日志模块,但是子进程中却没有这个logger,会导致使用logger的时候直接报错,子进程无法继续执行,但是报错的是日志模块,所以日志模块自己不会把错误写到自己的记录中。最后导致日志也没错,进程也没执行结果

3. 数据库连接超时

当时是在父进程中建立Mysql数据库的连接池,交给子进程后,子进程处理完成需要保存数据时无法使用这个连接池,因为连接池的连接创建但长时间未使用时Mysql会主动断开这个链接,结果子进程运气不好选了一个被断开的连接的时候就会报一个Error Code: 2013. Lost connection to MySQL server during query的报错。所以最好在子进程需要用到数据库时在子进程中创建连接,不要把父进程当成指挥棒,而要就功能来函数划分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的代Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值