2016-06-27 20 views
1

イムを与え、私はこのエラーを取得しておいてください。スレッディングは、私の研究のためのプロジェクトで忙しいはTypeError

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秒後にはエラーがポップアップし続けます。でも、これらのエラーが表示されている間もスクリプトは実行され続けます。

+0

私は真のt.daemon =を削除した場合、エラーが、私はそれをすることはできませんなぜ今、私は思ったんだけど...消えることを考え出しましたデーモンスレッド。 – Nerotix

答えて

2
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")))) 
関連する問題