鍍金池/ 問答/Java  Python  數(shù)據(jù)庫/ rabbit異步處理時,mysql讀取了一個還沒寫完的數(shù)據(jù),報錯了。

rabbit異步處理時,mysql讀取了一個還沒寫完的數(shù)據(jù),報錯了。

應(yīng)用場景:
客戶上傳文件,django服務(wù)器在數(shù)據(jù)庫里寫入一條status=1的數(shù)據(jù).然后交給rabbit讀取文件并且解析,解析完成后把status設(shè)置成2。
rabbitmq的傳輸格式是{"file":"test", "dataSourceId":"1"}.因為傳遞的是id,所以有時候rabbitmq會報錯說沒有這條記錄。
這是寫入數(shù)據(jù)的方法
clipboard.png
這是解析函數(shù),現(xiàn)在sleep就不會報錯。

clipboard.png

我想問下怎么讓rabbitmq的程序等django寫完數(shù)據(jù)再去讀???或者有別的思路可以避免讀不出來數(shù)據(jù)

回答
編輯回答
老梗

大概意思,我是看懂了,就是說,是異步操作,并不能保證是完成的順序性。
我可以提供一個思路。是不是可以設(shè)置一個全局變量flag,在某個操作完成后,修改flag的值,根據(jù)值來判斷是否可以有id這條記錄。

2017年10月21日 12:19