Beispiel #1
0
    def __init__(self,
                 logger,
                 handler,
                 socket_path,
                 platform_kind,
                 namespace=''):
        self._logger = logger
        self._socket_path = socket_path
        self._json_encoder = nuclio_sdk.json_encoder.Encoder()
        self._entrypoint = None
        self._processor_sock = None
        self._platform = nuclio_sdk.Platform(platform_kind,
                                             namespace=namespace)

        # holds the function that will be called
        self._entrypoint = self._load_entrypoint_from_handler(handler)

        # connect to processor
        self._processor_sock = self._connect_to_processor()

        # replace the default output with the process socket
        self._logger.set_handler('default', self._processor_sock.makefile('w'),
                                 nuclio_sdk.logger.JSONFormatter())

        # get handler module
        entrypoint_module = sys.modules[self._entrypoint.__module__]

        # create a context with logger and platform
        self._context = nuclio_sdk.Context(self._logger, self._platform)

        # call init context
        if hasattr(entrypoint_module, 'init_context'):
            getattr(entrypoint_module, 'init_context')(self._context)
Beispiel #2
0
    def __init__(self,
                 logger,
                 handler,
                 socket_path,
                 platform_kind,
                 namespace=None,
                 worker_id=None,
                 trigger_kind=None,
                 trigger_name=None,
                 decode_event_strings=True):
        self._logger = logger
        self._socket_path = socket_path
        self._json_encoder = nuclio_sdk.json_encoder.Encoder()
        self._entrypoint = None
        self._processor_sock = None
        self._platform = nuclio_sdk.Platform(platform_kind,
                                             namespace=namespace)
        self._decode_event_strings = decode_event_strings

        # 1gb
        self._max_buffer_size = 1024 * 1024 * 1024

        # holds the function that will be called
        self._entrypoint = self._load_entrypoint_from_handler(handler)

        # connect to processor
        self._processor_sock = self._connect_to_processor()

        # make a writeable file from processor
        self._processor_sock_wfile = self._processor_sock.makefile('w')

        # create msgpack unpacker
        self._unpacker = self._resolve_unpacker()

        # event deserializer kind (e.g.: msgpack_raw / json)
        self._event_deserializer_kind = self._resolve_event_deserializer_kind()

        # get handler module
        entrypoint_module = sys.modules[self._entrypoint.__module__]

        # create a context with logger and platform
        self._context = nuclio_sdk.Context(
            self._logger, self._platform, worker_id,
            nuclio_sdk.TriggerInfo(trigger_kind, trigger_name))

        # replace the default output with the process socket
        self._logger.set_handler('default', self._processor_sock_wfile,
                                 nuclio_sdk.logger.JSONFormatter())

        # call init context
        if hasattr(entrypoint_module, 'init_context'):
            try:
                getattr(entrypoint_module, 'init_context')(self._context)
            except:
                self._logger.error(
                    'Exception raised while running init_context')
                raise

        # indicate that we're ready
        self._write_packet_to_processor('s')
Beispiel #3
0
    def __init__(self,
                 logger,
                 handler,
                 socket_path,
                 platform_kind,
                 namespace=None,
                 worker_id=None,
                 trigger_kind=None,
                 trigger_name=None):
        self._logger = logger
        self._socket_path = socket_path
        self._json_encoder = nuclio_sdk.json_encoder.Encoder()
        self._entrypoint = None
        self._processor_sock = None
        self._platform = nuclio_sdk.Platform(platform_kind,
                                             namespace=namespace)

        # holds the function that will be called
        self._entrypoint = self._load_entrypoint_from_handler(handler)

        # connect to processor
        self._processor_sock = self._connect_to_processor()

        # make a writeable file from processor
        self._processor_sock_wfile = self._processor_sock.makefile('w')

        # create msgpack unpacker
        self._unpacker = self._resolve_unpacker()

        # get handler module
        entrypoint_module = sys.modules[self._entrypoint.__module__]

        # create a context with logger and platform
        self._context = nuclio_sdk.Context(
            self._logger, self._platform, worker_id,
            nuclio_sdk.TriggerInfo(trigger_kind, trigger_name))

        # call init context
        if hasattr(entrypoint_module, 'init_context'):
            try:
                getattr(entrypoint_module, 'init_context')(self._context)
            except:
                self._logger.error(
                    'Exception raised while running init_context')
                raise

        # replace the default output with the process socket
        self._logger.set_handler('default', self._processor_sock_wfile,
                                 nuclio_sdk.logger.JSONFormatter())

        # indicate that we're ready
        self._write_packet_to_processor('s')

        # log deprecation warning
        if nuclio_sdk.helpers.PYTHON2:
            self._logger.warn(
                'Python 2.7 runtime is deprecated. '
                'Nuclio will drop support for Python 2.7 runtime as of version 1.6.0. '
                'Please migrate your code to Python 3.6')
def test_face_prediction():
    f = open("image.txt", "r")
    image = f.readline()
    f.close()
    logger = nuclio_sdk.Logger(level=logging.INFO)
    ctx = nuclio_sdk.Context(logger=logger)
    event = nuclio_sdk.Event(body=image)
    handler(ctx, event)
Beispiel #5
0
    def __init__(self,
                 logger,
                 loop,
                 handler,
                 socket_path,
                 platform_kind,
                 namespace=None,
                 worker_id=None,
                 trigger_kind=None,
                 trigger_name=None,
                 decode_event_strings=True):
        self._logger = logger
        self._socket_path = socket_path
        self._json_encoder = nuclio_sdk.json_encoder.Encoder()
        self._entrypoint = None
        self._processor_sock = None
        self._platform = nuclio_sdk.Platform(platform_kind,
                                             namespace=namespace)
        self._decode_event_strings = decode_event_strings

        # 1gb
        self._max_buffer_size = 1024 * 1024 * 1024

        # holds the function that will be called
        self._entrypoint = self._load_entrypoint_from_handler(handler)

        self._is_entrypoint_coroutine = asyncio.iscoroutinefunction(
            self._entrypoint)

        # connect to processor
        self._processor_sock = self._connect_to_processor()

        # make a writeable file from processor
        self._processor_sock_wfile = self._processor_sock.makefile('w')

        # create msgpack unpacker
        self._unpacker = self._resolve_unpacker()

        # set event loop
        self._loop = loop

        # event deserializer kind (e.g.: msgpack_raw / json)
        self._event_deserializer_kind = self._resolve_event_deserializer_kind()

        # get handler module
        self._entrypoint_module = sys.modules[self._entrypoint.__module__]

        # create a context with logger and platform
        self._context = nuclio_sdk.Context(
            self._logger, self._platform, worker_id,
            nuclio_sdk.TriggerInfo(trigger_kind, trigger_name))

        # replace the default output with the process socket
        self._logger.set_handler('default', self._processor_sock_wfile,
                                 JSONFormatterOverSocket())
Beispiel #6
0
    def __init__(self):
        self._logger = nuclio_sdk.Logger(logging.DEBUG, "mock_platform")
        self._logger.set_handler("default", sys.stdout,
                                 nuclio_sdk.logger.HumanReadableFormatter())

        self._handler_contexts = {}
        self._call_function_mock = unittest.mock.MagicMock()
        self._kind = "test"

        # for tests that need a context
        self._context = nuclio_sdk.Context(self._logger, self)
Beispiel #7
0
    def __init__(self,
                 logger,
                 handler,
                 socket_path,
                 platform_kind,
                 namespace=None,
                 worker_id=None,
                 trigger_kind=None,
                 trigger_name=None):
        self._logger = logger
        self._socket_path = socket_path
        self._json_encoder = nuclio_sdk.json_encoder.Encoder()
        self._entrypoint = None
        self._processor_sock = None
        self._platform = nuclio_sdk.Platform(platform_kind, namespace=namespace)

        # holds the function that will be called
        self._entrypoint = self._load_entrypoint_from_handler(handler)

        # connect to processor
        self._processor_sock = self._connect_to_processor()

        # make a writeable file from processor
        self._processor_sock_wfile = self._processor_sock.makefile('w')

        # since this wrapper is behind the nuclio processor, in which pre-handle the traffic & request
        # it is not mandatory to provide security over max buffer size.
        # the request limit should be handled on the processor level.
        self._unpacker = msgpack.Unpacker(raw=False, max_buffer_size=2**32-1)

        # get handler module
        entrypoint_module = sys.modules[self._entrypoint.__module__]

        # create a context with logger and platform
        self._context = nuclio_sdk.Context(self._logger,
                                           self._platform,
                                           worker_id,
                                           nuclio_sdk.TriggerInfo(trigger_kind, trigger_name))

        # call init context
        if hasattr(entrypoint_module, 'init_context'):
            try:
                getattr(entrypoint_module, 'init_context')(self._context)
            except:
                self._logger.error('Exception raised while running init_context')
                raise

        # replace the default output with the process socket
        self._logger.set_handler('default', self._processor_sock_wfile, nuclio_sdk.logger.JSONFormatter())

        # indicate that we're ready
        self._write_packet_to_processor('s')
Beispiel #8
0
    def __init__(self,
                 logger,
                 handler,
                 socket_path,
                 platform_kind,
                 namespace=None,
                 worker_id=None,
                 trigger_name=None):
        self._logger = logger
        self._socket_path = socket_path
        self._json_encoder = nuclio_sdk.json_encoder.Encoder()
        self._entrypoint = None
        self._processor_sock = None
        self._platform = nuclio_sdk.Platform(platform_kind,
                                             namespace=namespace)

        # holds the function that will be called
        self._entrypoint = self._load_entrypoint_from_handler(handler)

        # connect to processor
        self._processor_sock = self._connect_to_processor()

        # make a writeable file from processor
        self._processor_sock_wfile = self._processor_sock.makefile('w')
        self._unpacker = msgpack.Unpacker(raw=False,
                                          max_buffer_size=10 * 1024 * 1024)

        # get handler module
        entrypoint_module = sys.modules[self._entrypoint.__module__]

        # create a context with logger and platform
        self._context = nuclio_sdk.Context(self._logger, self._platform,
                                           worker_id, trigger_name)

        # call init context
        if hasattr(entrypoint_module, 'init_context'):
            try:
                getattr(entrypoint_module, 'init_context')(self._context)
            except:
                self._logger.warn_with(
                    'Exception raised while running init_context')
                raise

        # replace the default output with the process socket
        self._logger.set_handler('default', self._processor_sock_wfile,
                                 nuclio_sdk.logger.JSONFormatter())

        # indicate that we're ready
        self._write_packet_to_processor('s')
Beispiel #9
0
    def _get_handler_context(self, handler):
        try:
            return self._handler_contexts[handler]
        except KeyError:

            # first time we're calling this handler
            context = nuclio_sdk.Context(self._logger, self)

            # get handler module
            handler_module = sys.modules[handler.__module__]

            self._logger.info_with("Calling handler init context",
                                   handler=str(handler))

            # call init context
            if hasattr(handler_module, "init_context"):
                getattr(handler_module, "init_context")(context)

            # save context and return it
            self._handler_contexts[handler] = context

            return context