1
shellfly 2017-05-29 09:25:14 +08:00
猜想大概有几种可能,可以逐一排除一下:
1. update 不发送 post_save 的 signal。代码里有的地方是直接 update 而不是调用的 save 2. save 放在了一个 transaction 里面。task 的代码是发送到 celery 上执行的,可能这时候 transaction 还没提交,objects.get 会报错,被你 catch,return 掉了 3. redis 里的 key 被其他地方重复使用。这个搜一下代码就知道了 4. 统计脚本有问题 |
2
Danfi 2017-05-29 10:55:56 +08:00
估计是数据还没保存到数据库任务就已经运行了 test_models.objects.get(id=test_models_id) ,然后获取不到数据
|
3
111111111111 2017-05-29 19:42:37 +08:00 via Android 1
receiver 和 task 里打个 log 看看
另外数据库是读写分离的么 |
4
huisezhiyin OP 已解决
因为使用了读写分离的缘故 导致这个信号的异步任务发起时没有从读库获取对应的信息 现在在异步任务里加一个 delay 应该就可以解决了 |
5
huisezhiyin OP @111111111111 是的 应该是读写分离的缘故 读库速度较慢
|
6
wingyiu 2017-05-31 21:22:48 +08:00
更好的办法是用 canal 吧?
|