def receive_datagram(self, data, address):
<EOL>if not self.app:<EOL><INDENT>logger.debug("<STR_LIT>", address, data)<EOL>return False<EOL><DEDENT>try:<EOL><INDENT>response = self.app.handle_message(data, address)<EOL><DEDENT>except Exception as err:<EOL><INDENT>logger.error("<STR_LIT>" + str(address) +<EOL>"<STR_LIT::>" + str(data))<EOL>logger.error(traceback.format_exc())<EOL>return False<EOL><DEDENT>if response:<EOL><INDENT>self.send_datagram(response, address)<EOL><DEDENT>
Executes when UDP data has been received and sends the packet data
        to our app to process the request.

        Args:
          data (str): The raw serialized packet data received.
          address (tuple): The address and port of the origin of the received
            packet. E.g. (address, port).

        Returns:
          None