txpostgres: отложенный экземпляр не имеет атрибута addCallBack

Я хочу использовать асинхронное соединение с базой данных postgres для вставки поступающих в реальном времени данных. Я использую Twisted для связи по TCP, и я даю txpostgres шанс для взаимодействия с базой данных. Я получаю странное сообщение, когда пытаюсь добавить обратный вызов для моей асинхронной вставки. Вот мой код:

try:
    conn = txpostgres.ConnectionPool(50,params)
    d = conn.start()
    def save_conn(c):
       self.list_cnx.append(c)
       print str(c),"Connect OK"
    def print_err(m):
       print m
   d.addCallbacks(lambda _: save_conn(conn),lambda __: print_err('Connect NO'))
except Exception as e:
    print "Cannot connect to database!!"

Я добавляю ссылку на пул соединений в список для будущего запроса.

def insert_data(self,dic):
    try:
        insArRq="""INSERT INTO test_pool(date_msg, msg) VALUES ('%s','%s')"""%(dic['date'],dic['msg'])
        for c in self.list_cnx:
            def insert_finich():
                print "insert finich"
            def insert_error():
                print "insert error"
            d = c.runOperation(insArRq) # return a deferred as mentioned in the documentation
            print d # for debug
            d.addCallBack(insert_finich) # error mesage 
    except Exception as ee:
        print "Insert error :  ",ee

Когда я пытаюсь добавить функцию обратного вызова для deferred, возвращенного runOperation, появляется эта ошибка:

<Deferred at 0x8d9782c waiting on Deferred at 0x8d9786c>
Insert error :   Deferred instance has no attribute 'addCallBack'

и иногда:

<Deferred at 0x8d97a0c>
Insert error :   Deferred instance has no attribute 'addCallBack'

Помогите мне, пожалуйста, я новичок в отложенных понятиях, так что я думаю, что что-то упустил. Спасибо

1 ответ

Решение

Метод назван addCallback; дело важно.

Другие вопросы по тегам