code: def GenerateTaskID(self):
      
      # Random number can not be zero since next_id_base must increment.
      random_number = random.PositiveUInt16()
  
      # 16 bit random numbers
      with GrrMessage.lock:
        next_id_base = GrrMessage.next_id_base
  
        id_base = (next_id_base + random_number) & 0xFFFFFFFF
        if id_base < next_id_base:
          time.sleep(0.001)
  
        GrrMessage.next_id_base = id_base
  
      # 32 bit timestamp (in 1/1000 second resolution)
      time_base = (int(time.time() * 1000) & 0x1FFFFFFF) << 32
  
      task_id = time_base | id_base
  
      self.Set("task_id", task_id)
      return task_id
docs: Generates a new, unique task_id.