docstr: Given a message from the client, process it through the Perspective
  engine.
  
  Args:
      msg (:obj`dict`): a message from the client with instructions
          that map to engine operations
      post_callback (:obj`callable`): a function that returns data to the
          client. `post_callback` should be a callable that takes two
          parameters: `data` (str), and `binary` (bool), a kwarg that
          specifies whether `data` is a binary string.
docstr_tok: ["Given","a","message","from","the","client",",","process","it","through","the","Perspective","engine",".","Args",":","msg","(",":","obj","`","dict","`",")",":","a","message","from","the","client","with","instructions","that","map","to","engine","operations","post_callback","(",":","obj","`","callable","`",")",":","a","function","that","returns","data","to","the","client",".","`","post_callback","`","should","be","a","callable","that","takes","two","parameters",":","`","data","`","(","str",")",",","and","`","binary","`","(","bool",")",",","a","kwarg","that","specifies","whether","`","data","`","is","a","binary","string","."]
code: def _process(self, msg, post_callback, client_id=None):
      """Given a message from the client, process it through the Perspective
      engine.
  
      Args:
          msg (:obj`dict`): a message from the client with instructions
              that map to engine operations
          post_callback (:obj`callable`): a function that returns data to the
              client. `post_callback` should be a callable that takes two
              parameters: `data` (str), and `binary` (bool), a kwarg that
              specifies whether `data` is a binary string.
      """
      if self._loop_callback:
          self._loop_callback(
              self.__process, msg, post_callback, client_id
          )
      else:
          self.__process(msg, post_callback, client_id)
  
imports: import datetime
  import json
  import logging
  from collections import deque
  from functools import partial
  from ..core.exception import PerspectiveError
  from ..table import PerspectiveCppError, Table
  from ..table._callback_cache import _PerspectiveCallBackCache
  from ..table._date_validator import _PerspectiveDateValidator
label_desc: Use image node_id 3 for calling the _PerspectiveManagerInternal obj's underlying member method code with example usage: obj._process(msg, post_callback, client_id) without return types