rabbit异步处理时,mysql读取了一个还没写完的数据,报错了。

应用场景:
客户上传文件,django服务器在数据库里写入一条status=1的数据.然后交给rabbit读取文件并且解析,解析完成后把status设置成2。
rabbitmq的传输格式是{"file":"test", "dataSourceId":"1"}.因为传递的是id,所以有时候rabbitmq会报错说没有这条记录。
这是写入数据的方法
clipboard.png
这是解析函数,现在sleep就不会报错。

clipboard.png

我想问下怎么让rabbitmq的程序等django写完数据再去读啊?或者有别的思路可以避免读不出来数据

阅读 2.1k
1 个回答

大概意思,我是看懂了,就是说,是异步操作,并不能保证是完成的顺序性。
我可以提供一个思路。是不是可以设置一个全局变量flag,在某个操作完成后,修改flag的值,根据值来判断是否可以有id这条记录。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题