2016-10-30 9 views
0

Я создал скрипт python, который управляет множеством разных вещей для моего пула. Я добавляю больше функций и играю с некоторыми таймаутами на моей малине Pi, которая работает все. Сегодня я начал получать эту ошибку:Python - Исключение в потоке Thread-1 (in __bootstrap_inner)

Exception in thread Thread-1: 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner 
self.run() 
    File "/usr/lib/python2.7/threading.py", line 1082, in run 
self.function(*self.args, **self.kwargs) 
TypeError: 'str' object is not callable 

Так я начал читать на последней части (TypeError: «ул» объект не вызываемая и полагал, что я должен был использовать его в качестве переменной, и это было вмешательство со встроенным -in str. Поэтому я искал каждый отдельный экземпляр, если str в моем коде, который я мог найти (1300 строк), и это все, что я нашел, поэтому теперь я озадачен тем, что может на самом деле вызвать проблему (сокращено до показать, где находится ул:

1) logger.info("Notify socket = {0}".format(str(s_adr))) 
2) ph_value = str(line) 
3)"/input/post.json?&node=" + str(pooldb.ph_node) 
4) orp_value = str(line2) 
5)"/input/post.json?&node=" + str(pooldb.orp_node) 
6) current_military_time = int(datetime.datetime.now().strftime('%H%M')) 

То есть, в 1300 + строк кода только эти экземпляры «ул», что я могу найти и ни один из них переменные, так что я я смущен относительно того, что вызывает ошибку.

Любые идеи были бы весьма признательны.

Благодаря

ответ

1

Это, вероятно, не имеет ничего общего с str() встроенной командой. В сообщении говорится, что self.function имеет номер типstr - и строки фактически не подлежат вызову. Нравится так:

>>> 'ab'(3) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'str' object is not callable 
>>> 23(3) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'int' object is not callable 
>>> [7](3) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'list' object is not callable 

Вы должны смотреть вместо этого на то, как вы создаете потоки. Например,

>>> import threading 
>>> t = threading.Thread(target="abc") 
>>> t.start() 
Exception in thread Thread-1: 
Traceback (most recent call last): 
    File "C:\Python27\lib\threading.py", line 801, in __bootstrap_inner 
    self.run() 
    File "C:\Python27\lib\threading.py", line 754, in run 
    self.__target(*self.__args, **self.__kwargs) 
TypeError: 'str' object is not callable 
+0

ОК, вот так я называю тему: 'импорт threading' ' threading.Timer (pooldb.checktime, pool_level) .start() ' – Richard

+0

Никто здесь не является телепатическая; -) То есть никто не может догадаться, что такое 'pooldb.checktime' и' pool_level'. Если. например, 'pool_level' привязан к строке, то ошибка, которую вы видите, именно то, что вы должны видеть. http://stackoverflow.com/help/mcve –

+0

Приношу свои извинения, я не совсем уверен, что вам нужно, чтобы помочь. pool_level - целая функция. Это показано на строке 1255 здесь: [link] (https://github.com/rjsears/Pool_Fill_Control/blob/master/pool_fill_control.py), а pooldb.checktime находится в строке 94 здесь: [link] (https: // github.com/rjsears/Pool_Fill_Control/blob/master/pooldb.py) – Richard