class_docstr: Base class for a person on a chat serivce that can act in a ParlAI world.
class_docstr_tok: ["Base","class","for","a","person","on","a","chat","serivce","that","can","act","in","a","ParlAI","world","."]
docstr: Repeatedly loop until we retrieve a message from the queue.
docstr_tok: ["Repeatedly","loop","until","we","retrieve","a","message","from","the","queue","."]
code: def act_blocking(self, timeout=None):
      """
      Repeatedly loop until we retrieve a message from the queue.
      """
      while True:
          if self.message_request_time is None:
              self.message_request_time = time.time()
          msg = self.act()
          if msg is not None:
              self.message_request_time = None
              return msg
          if self._check_timeout(timeout):
              return None
          time.sleep(0.2)
  
file_path: ParlAI/parlai/chat_service/core/agents.py
imports: import time
  from abc import ABC, abstractmethod
  from queue import Queue
  from parlai.core.agents import Agent
label_desc: Use image node_id 12 for calling the ChatServiceAgent obj's underlying member method code with example usage: obj.act_blocking(timeout) and returns: msg, None