我使用cherrypy运行api并使用thread_data将postgresql游标附加到每个线程。
def connect_pg(thread_index):
cherrypy.thread_data.pgdb = connect(**cherrypy.config['pgargs'])
dict_cur = cherrypy.thread_data.pgdb.cursor(cursor_factory=psycopg2.extras.DictCursor)
dict_cur.close()
然后我使用
创建一个游标 cherrypy.thread_data.pgdb.cursor(cursor_factory=psycopg2.extras.DictCursor)
有时可能会发出错误请求,从而导致出现错误消息
InternalError:当前事务被中止,命令被忽略,直到事务块结束
此标准解决方案是进行回滚(http://initd.org/psycopg/docs/faq.html)。
但是,回滚是一种连接方法,而不是游标方法。
使用cherrpy的thread_data时,有哪些好方法可以解决这个错误?
答案 0 :(得分:0)
我在cherrypy中使用了autocommit,并且很好地完成了工作(How do I properly use psycopg2 with cherrypy?)。我现在按如下方式创建游标:
def connect_pg(thread_index):
cherrypy.thread_data.pgdb = connect(**cherrypy.config['pgargs'])
cherrypy.thread_data.pgdb.autocommit=True
dict_cur = cherrypy.thread_data.pgdb.cursor(cursor_factory=psycopg2.extras.DictCursor)
dict_cur.close()