Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为redisWorker手动将任务添加到redis队列?_R_Foreach_Parallel Processing_Redis_R Doredis - Fatal编程技术网

如何为redisWorker手动将任务添加到redis队列?

如何为redisWorker手动将任务添加到redis队列?,r,foreach,parallel-processing,redis,r-doredis,R,Foreach,Parallel Processing,Redis,R Doredis,是否可以手动将任务添加到redis队列中,以便由redis worker执行 举个简单的例子,我使用以下方法启动worker: require('doRedis') redisWorker('jobs') 在另一个R会话中,我正在创建一个队列,并希望向该队列发送一个简单的表达式(例如:print(“hello world”)),以便由工作人员执行 我知道如何使用foreach require('doRedis') registerDoRedis('jobs') foreach(j=1,.com

是否可以手动将任务添加到redis队列中,以便由redis worker执行

举个简单的例子,我使用以下方法启动worker:

require('doRedis')
redisWorker('jobs')
在另一个R会话中,我正在创建一个队列,并希望向该队列发送一个简单的表达式(例如:
print(“hello world”)
),以便由工作人员执行

我知道如何使用foreach

require('doRedis')
registerDoRedis('jobs')
foreach(j=1,.combine=sum,.multicombine=TRUE) %dopar% {
  print("hello world")
  1
}    
我希望能够在不使用foreach的情况下将任务添加到队列中。原因是,我不想让我的R会话等待输出(脚本将其结果写入磁盘)

以下是我迄今为止根据
.doRedis()
函数中的代码所做的尝试:

data <- list(queue = "jobs")
queue <- data$queue
queueCounter <- sprintf("%s:counter", queue)   # job task ID counter
ID <- redisIncr(queueCounter)
queueEnv <- sprintf("%s:%.0f.env",queue,ID) # R job environment
queueTasks <- sprintf("%s:%.0f",queue,ID) # Job tasks hash
queueResults <- sprintf("%s:%.0f.results",queue,ID) # Output values
queueStart <- sprintf("%s:%.0f.start*",queue,ID)
queueAlive <- sprintf("%s:%.0f.alive*",queue,ID)

# add the environment to the queue
redisSet(key = queueEnv,
         value = list(expr=expression(), 
                      exportenv=baseenv(), 
                      packages=NULL)

# put tasks in queue
taskblock <- list(ex1 <- expression('print("hello world")'))
j <- 1
taskLabel <- I
task_id = as.character(taskLabel(j))
task <- list(task_id=task_id, args=taskblock)
redisHSet(key = queueTasks, 
          field = task_id, 
          value = task)
redisRPush(key = queue, value = ID)
数据