Python 线程会产生类型错误

Python 线程会产生类型错误,python,multithreading,Python,Multithreading,我正忙于一个学习项目,我不断地遇到这样的错误: Exception in thread Thread-62: Traceback (most recent call last): File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner self.run() File "/usr/lib/python2.7/threading.py", line 754, in run self.__ta

我正忙于一个学习项目,我不断地遇到这样的错误:

Exception in thread Thread-62:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
TypeError: 'long' object is not callable
产生此错误的函数是:

teller = 0
def toRedis(dstip, srcip, dnsname):
    global teller

    ignoreDom = config.getSetting('setup', 'ignore')

    if dnsname in ignoreDom:
        pass
    else:
        teller += 1
        answer = {"_id": teller, "destination": dstip, "source": srcip, "name": dnsname}
        r_serv.hmset("_id" + str(teller), answer)

        t = threading.Thread(target=r_serv.hset("_id" + str(teller),
                    "vt", VTHandler(r_serv.hget("_id" + str(teller), "source"))))
        t.daemon = True
        t.start()

        print r_serv.hgetall("_id" + str(teller))
我很确定它来自线程,因为它在错误中。但我不知道出了什么问题,我觉得还好。在最初的几分钟里,它不会给我一个错误,但是在大约20秒后,错误会不断出现,即使这些错误被打印出来时脚本仍在运行

t = threading.Thread(target=r_serv.hset("_id" + str(teller),
                    "vt", VTHandler(r_serv.hget("_id" + str(teller), "source"))))
您正在调用
r_serv.hset
函数,然后将其返回值分配给
target
kwarg(随后将调用该函数并引发异常),而不是将函数本身分配给
target
kwarg

你应该做的是:

t = threading.Thread(target=r_serv.hset, args=("_id" + str(teller),
                     "vt", VTHandler(r_serv.hget("_id" + str(teller), "source"))))

我发现如果我删除t.daemon=True,错误就会消失。。现在我想知道为什么我不能使它成为一个守护线程。