我有一个应用程序将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
答案 0 :(得分:8)
多处理K,V
时遇到了类似的问题。我最后解决了这个问题,只需在子进程应该输入的函数下的第一行中添加engine.execute()
,如official document中所示:
当程序使用多处理或
engine.dispose()
时,fork()
对象是 复制到子进程,应该调用Engine
以便 引擎在该fork的本地创建全新的数据库连接。数据库 连接通常不跨越流程边界。