   # ### Get Workers Asynchronously
   #
   # Get all online workers of the queue. Online workers are registered in the
-  # `WORKERS` hash, the values is in `hostname:ip:pid` format.  **Usage:**
+  # `WORKERS` hash, the values is in `hostname|ip|pid` format.  **Usage:**
   #
   #     queue.workers (workers) ->
   #       console.log "Total #{workers.length} workers is online."


  # ### Register Handler

  # When registering a processing handler function, **Fairy** will immediately
  # start polling tasks and process them on present. **Usage:**
  #
  #     queue.regist (param1, param2, callback) ->
  #       console.log param1, param2
  #       callback()
  regist: (@handler) =>
    registered.push "#{@fairy.id}:#{@name}"
    worker_id = uuid.v4()
    @redis.hset @key('WORKERS'), worker_id, "#{os.hostname()}:#{get_server_ip()}:#{process.pid}"
    process.on 'exit', =>
      console.log 'Fairy is exiting.'
      @redis.hdel @key('WORKERS'), worker_id
    @_poll()

  # ### Poll New Task

  workers: (callback) ->
    @redis.hvals @key('WORKERS'), (err, res) ->
      callback res.map (entry) ->
        segments = entry.split '|'
        {
          host: segments[0]
          ip: segments[1]
