我不是这个意思,扑获我会,但是我不知道怎么处理

我不是这个意思,扑获我会,但是我不知道怎么处理

我是在一个线程里面扑获到的,我不想让连接就这样丢失了,想重建连接但是不可以阿

下面是我的例子

#!/usr/bin/env python
#coding=utf-8

import thread
import re
import urllib
import string
import MySQLdb
import sys
import random
import time
import os
import socket

conn = ''
cursor = ''

socket.setdefaulttimeout(5)

def childthread(threadid):
   
    global conn
    global cursor
   
    try:
        cursor.execute("select count(id) as count from products where hasDownload='1'")
        cursor.scroll(0)
        producttuple=cursor.fetchone()
        productcount = producttuple[0]

        print str(threadid)+"\t"+productcount
        return True

    except:
        print str(threadid)+"\tfail"
        conn = MySQLdb.connect(host="local", user="yty", passwd="iji", db="retet", charset='utf8')
        cursor = conn.cursor()
        return False
   
def parentthread():
    i=0
    while 1:
        i+=1
        result = thread.start_new_thread(childthread,(i,))
        
        if result == False:
            time.sleep(10)
        else:
            time.sleep(1)
        
parentthread()
把连接做成全局的试看看?timeout时间长点看看?
楼主的意思是在try里面捕获下异常,有异常就是代表数据库没有链接,然后链接下,在运行程序是这个意思么?
子线程修改cursor不需要同步么?
用修饰器吧!
不太明白lz的意思。目前还没开始研究Python的线程。但C#中你不能简单的通过try-catch,在主线程去捕获子线程的错误。可以通过委托,把子线程的错误返回给主线程。不知道Python是否有事件、委托这样的东西?我想估计lz现在主线程去处理子线程的问题应该还是有困难的。4#说的修饰器是什么概念
lz 是如何保证提取cursor时,得到的就是当前线程里查询的结果的?