Phi*_*ash 2 python asynchronous psycopg2 sqlbulkcopy celery
我的问题是我面临
ProgrammingError: copy_from 不能与异步回调一起使用。
在尝试copy_from没有异步连接时。必须说明的是,我正在从芹菜任务创建连接。有人可以告诉我 sqlalchemy 或 celery 或任何强制我的 psycopg2 连接表现得像异步的线索吗?
conn = psycopg2.connect(con_string)
conn.async
>>0
cur = conn.cursor()
data = BytesIO()
data.write('\n'.join(['Tom\tJenkins\t37',
'Madonna\t\N\t45',
'Federico\tDi Gregorio\t\N']))
data.seek(0)
curs.copy_from(data, 'test_copy')
Run Code Online (Sandbox Code Playgroud)
我们在 pgcli 中遇到了这个错误;在这种情况下,结果是 wait_callback 使连接表现得好像从 psycopg2 的角度来看是异步的。这有助于:
from contextlib import contextmanager
@contextmanager
def _paused_thread():
try:
thread = psycopg2.extensions.get_wait_callback()
psycopg2.extensions.set_wait_callback(None)
yield
finally:
psycopg2.extensions.set_wait_callback(thread)
with _paused_thread():
cursor.copy_expert('copy mytable to STDOUT', file)
Run Code Online (Sandbox Code Playgroud)