V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zrp1994
V2EX  ›  Python

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

  •  
  •   zrp1994 · 2016-03-08 15:26:47 +08:00 · 2910 次点击
    这是一个创建于 2978 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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
    

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

    2 条回复    2016-04-28 09:52:27 +08:00
    zrp1994
        1
    zrp1994  
    OP
       2016-03-09 09:57:31 +08:00
    沉的好快呀,我顶一下吧
    zrp1994
        2
    zrp1994  
    OP
       2016-04-28 09:52:27 +08:00
    最终发现问题是实验室网络不稳定造成的……结贴。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2203 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 02:04 · PVG 10:04 · LAX 19:04 · JFK 22:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.