求教,多进程下使用 PyODBC 连接 SQL Server 读取数据,一段时间后报出“通讯链接失败”错误……

2016-03-08 15:26:47 +08:00
 zrp1994

Python 是在本地机上运行的, SQL Server 在服务器上。每个进程每次大概读取几千条数据,计算完成后再读下面几千条。刚开始连接的一段时间内都可以正常的接受数据并计算,然而一段时间后所有进程都会报出:

'08S01', '[08S01] [Microsoft][ODBC SQL Server Driver]通讯链接失败 (0) (SQLExecDirectW)'

可以确认的是这个时候的网络并没有中断,并且重启程序后恢复正常,直到一段时间后再次出错。我怀疑是 SQL Server 的连接数过多导致错误,但是程序的进程数是固定的,而且每次读取数据并不建立新的 Cursor 。

# 这个调用了一次
def connect():
    cursor = None
    try:
        mssql_connection = pyodbc.connect('DRIVER={{SQL Server}};SERVER={};DATABASE={};UID={};PWD={}'.format(SERVER_NAME, DB_NAME, DB_USER_NAME, DB_USER_PWD), unicode_results=True)
        cursor = mssql_connection.cursor()
    except:
        traceback.print_exc()
    return cursor

现在没头绪了……希望有过来人提供下思路,求轻喷

2953 次点击
所在节点    Python
2 条回复
zrp1994
2016-03-09 09:57:31 +08:00
沉的好快呀,我顶一下吧
zrp1994
2016-04-28 09:52:27 +08:00
最终发现问题是实验室网络不稳定造成的……结贴。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/261947

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX