這幾天自己寫了乙個python天天薅某個境外**的羊毛,執行過程中會往mysql中寫入資料。昨天**跑了一下午突然報錯了:
pymysql.err.operationalerror: (2013, 'lost connection to mysql server during query ([winerror 10054])
原因是mysql持久化鏈結保持時間為8小時(28800秒),過期後斷開連。如果資料庫沒有新建連線,就會報這個錯誤。[參考文獻]
#! /usr/bin/python
# coding=utf-8
try:
import mysqldb as mysql
except
:#python3不支援mysqldb
import pymysql as mysql
import time
class
mysql
:def
__init__
(self,
host ='',
user ='',
passwd ='',
db ='',
port =
3306
, charset =
'utf8'):
self.host = host
self.host = host
self.user = user
self.passwd = passwd
self.db = db
self.port = port
self.charset= charset
self.conn =
none
self._conn(
)def
_conn
(self)
:try
: self.conn = mysql.connection(host = self.host, user = self.user, passwd = self.passwd, db = self.db, port = self.port , charset = self.charset)
print
("資料庫連線成功"
)return
true
except exception as e:
print
("資料庫連線失敗:"
+str
(e))
return
false
#通過ping()實現資料庫的長連線
def_reconn
(self,num =
28800
,stime =3)
: _number =
0 _status =
true
while _status and _number <= num:
try:
#ping校驗連線是否異常
self.conn.ping(
) _status =
false
except
:print
("資料庫斷開連線,重連"
)if self._conn()==
true
: _status =
false
break
_number +=
1 time.sleep(stime)
defquerry
(self,sql)
:try
: self._reconn(
) self.cursor = self.conn.cursor(
) self.cursor.execute(sql)
results = self.cursor.fetchall(
) self.cursor.close(
)return results;
except exception as e:
print
("querry異常:"
+str
(e))
return
none
;def
insert
(self,sql,param)
:try
: self._reconn(
) self.cursor = self.conn.cursor(
) res = self.cursor.execute(sql,param)
; self.conn.commit();
self.cursor.close(
)return res;
except exception as e:
self.conn.rollback();
print
("insert異常:"
+str
(e))
return
false
;def
close
(self)
: self._reconn(
) self.conn.close(
);
mysql 長連線 聊天室 mysql長連線
長連線是幹嘛的 它是做連線復用的 在openresty中的lua resty mysql 裡 connect方法去連線mysql時會去ngx lua cosocket連線池中尋找是否有可用連線 如果有就直接復用 如果沒有就與mysql建立新連線,連線成功後立即將這個連線放入ngx lua cosoc...
PHP長連線實現
每次我們訪問php指令碼的時候,都是當所有的php指令碼執行完成後,我們才得到返回結果。如果我們需要乙個指令碼持續的執行,那麼我們就要通過php長連線的方式,來達到執行目的。每個php指令碼都限制了執行時間,所以我們需要通過 set time limit 來設定乙個指令碼的執行時間為無限長 然後使用...
Ajax 長連線實現
反轉ajax實質上是一種概念 能夠從伺服器傳送到客戶端的資料。在乙個標準的http ajax請求,資料傳送到伺服器,使伺服器可以傳送事件給客戶端 低延遲通訊 長輪詢模式涉及的技術,開啟乙個連線。連線是由伺服器保持開放,並,只要事件發生時,響應承諾和關閉連線。然後,乙個新的長輪詢連線立即重新開啟,等待...