Description Usage Arguments Details Value Note Author(s) Examples
Define a function used by workers to pull tasks.
1 | setGetTask(fn = default_getTask)
|
fn |
A task pulling function, see details below. |
The doRedis
package organizes work into a collections of tasks called a
job. One job may contain several uniquely identified task collections, and jobs
themselves are uniquely identified. The task collections are labeled by the
taskLabel
function.
A doRedis
task is specifically a list of two elements: task_id
and args
, that specify the unique ID of the task collection, and the
foreach
loop expression arguments, respectively.
As of version 1.1.0 of the doRedis
package, task collections are placed
in a Redis hash
table identified by the job ID. The getTask
function is used by the R worker processes to pull tasks from this hash table.
The getTask
function must take at least two arguments, queue
and
job_id
that specify the job queue and job ID, respectively. The
function should work with Redis to obtain and return a task collection, or
return NULL
if no tasks are available.
The getTask
function almost always defines a short Lua scipt run on
the Redis server.
The default getTask
function removes tasks in the order that they appear
in the hash table. Custom getTask
functions can be defined often in
association with custom taskLabel
functions. The custom functions can
instruct Redis to perferentially dole out tasks based on network distance to
data, for example.
Nothing is returned.
All doRedis functions require network access to a Redis server (not included with the doRedis package).
B. W. Lewis <blewis@illposed.net>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ## Not run:
require('doRedis')
# The default getTask function defines a Redis Lua script that returns the first
# listed task or NULL:sk <- function(queue, job_id, ...)
getTask <- function(queue, job_id, ...)
{
key <- sprintf("
redisEval("local x=redis.call('hkeys',KEYS[1])[1];
if x==nil then return nil end;
local ans=redis.call('hget',KEYS[1],x);
redis.call('hdel',KEYS[1],x);i
return ans",key)
}
setGetTask(getTask)
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.