我正在尝试设置一个并行任务,每个工作人员都需要进行数据库查询。我正在尝试为每个工作人员设置一个连接,如this question中所示,但每次我尝试它都会<Expired PostgreSQLConnection:(2781,0)>
为我注册的工作人员返回。
这是我的代码:
cl <- makeCluster(detectCores())
registerDoParallel(cl)
clusterEvalQ(cl, {
library(RPostgreSQL)
drv<-dbDriver("PostgreSQL")
con<-dbConnect(drv, user="user", password="password", dbname="ISO",host="localhost")
})
如果我尝试运行我foreach
的错误,它会失败task 1 failed - "expired PostgreSQLConnection"
当我进入 postgres 服务器状态时,它会显示所有已创建的活动会话。
我在与我的主 R 实例中的 postgres 交互时没有任何问题。
如果我跑
clusterEvalQ(cl, {
library(RPostgreSQL)
drv<-dbDriver("PostgreSQL")
con<-dbConnect(drv, user="user", password="password", dbname="ISO",host="localhost")
dbGetQuery(con, "select inet_client_port()")
})
然后它将返回所有客户端端口。它没有给我过期的通知,但是如果我尝试运行我的 foreach 命令,它将失败并出现相同的错误。
编辑:
我已经在 Ubuntu 和 2 台 Windows 计算机上尝试过,它们都给出了相同的错误。
另一个编辑:
现在3台windows电脑