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