psycopg2错误:DatabaseError:错误,没有来自libpq的消息

时间:2015-05-14 16:02:12

标签: python postgresql celery python-multiprocessing psycopg

我有一个应用程序将csv文件中的数据解析并加载到Postgres 9.3数据库中。在串行执行中,插入语句/游标执行没有问题。

我在混合中添加芹菜以添加并行解析和插入数据文件。解析工作正常。但是,我去运行插入语句,我得到:

[2015-05-13 11:30:16,464:  ERROR/Worker-1] ingest_task.work_it: Exception
    Traceback (most recent call last):
    File "ingest_tasks.py", line 86, in work_it
        rowcount = ingest_data.load_data(con=con, statements=statements)
    File "ingest_data.py", line 134, in load_data
        ingest_curs.execute(statement)
    DatabaseError: error with no message from the libpq

1 个答案:

答案 0 :(得分:8)

多处理K,V时遇到了类似的问题。我最后解决了这个问题,只需在子进程应该输入的函数下的第一行中添加engine.execute(),如official document中所示:

  

当程序使用多处理或engine.dispose()时,fork()对象是   复制到子进程,应该调用Engine以便   引擎在该fork的本地创建全新的数据库连接。数据库   连接通常跨越流程边界。