当我们的MS SQL服务器无法访问时,我们遇到了这个问题。这导致了我们的代码中的一个错误,它使得我们的程序停下来,当然还有干扰用户和我们门口的火把。我们已经能够解决我们的问题:如果用户Bob试图连接到数据库,他当然会等待程序尝试连接。如果此时Bob正在等待,另一个用户Joe尝试连接,他也会等待。过了一会,鲍勃会超时,并获得适当的错误。但是,乔的连接将会超时,并发生分段错误,导致所有内容都处于暂停状态。Segfault与pymssql无法连接到多线程服务器
我们已经能够可靠地重现此错误与下面的代码
import threading
import datetime
import time
import pymssql
class ThreadClass(threading.Thread):
def run(self):
now = datetime.datetime.now()
print "%s connecting at time: %s" % (self.getName(), now)
conn = pymssql.connect(host="10.255.255.1", database='blah',
user="blah", password="pass")
for i in range(2):
t = ThreadClass()
t.start()
time.sleep(1)
这将导致一个段错误的第一个线程引起它的错误后。有没有办法阻止这种段错误,使它适当地提出错误,或者有什么我在这里失踪?
Pymssql版本1.0.2和python 2.6.6。