我們本地數(shù)據(jù)庫data_account表大概有個2W個賬號,其中賬號有個認(rèn)證狀態(tài),和使用數(shù)據(jù)量需要同步第三方數(shù)據(jù)(分別叫做接口A和接口B),現(xiàn)在我需要每1分鐘都去同步這2W個賬號的認(rèn)證狀態(tài)和對應(yīng)賬號的數(shù)據(jù)使用量,然后更新數(shù)據(jù)到本地mysql數(shù)據(jù)表。第三方有限制并發(fā)請求不能超過50。
百度了一圈,都是建議用Go之類的,因為不懂Go,然后大概用了下別人python代碼(每次并發(fā)50),發(fā)現(xiàn)老是出現(xiàn):2013 (HY000): Lost connection to MySQL server during query,用了連接池也沒解決。所以問問workerman是否有相關(guān)實現(xiàn)方案。
開消費(fèi)隊列去請求就好了,不能超過50并發(fā)的話?那你這樣一分鐘查不完2W個賬戶的信息吧
python連接數(shù)據(jù)庫確實容易出現(xiàn)2013錯誤。
建議解決方法一:
連接數(shù)據(jù)庫后所有請求都用這一個connect。不同的請求使用不同的cursor。
建議解決方法二:
使用python的asyncio協(xié)程+aiomysql效果比pymysql好一些,高并發(fā)數(shù)據(jù)請求現(xiàn)在基本上都會用asynciod的。但學(xué)習(xí)成本比threading大。
建議解決方法三:
使用php連接數(shù)據(jù)庫,python直接訪問該php做成的簡易接口。從而實現(xiàn)查詢和更新mysql,效果比python直連MySQL穩(wěn)定許多。