Пример #1
0
    async def _arbiter_work(self):
        self.actors = []

        if not self._actors_init_tasks:
            self._actors_init_tasks = [_default_actor_init_task] * len(self._actors_counts)

        if not self._actors_last_tasks:
            self._actors_last_tasks = [_default_actor_last_task] * len(self._actors_counts)

        for i in range(len(self._actors_counts)):
            for j in range(self._actors_counts[i]):
                actor_name = 'actor({}, {})'.format(i, j)
                print(get_actor().name + ': Tworzę aktora ' + actor_name + '...')

                actor = await spawn(name=actor_name, start=partial(ArbiterHelper._init_actor, number=i,
                                                                   init_func=partial(self._actors_init_tasks[i]),
                                                                   last_job=partial(self._actors_last_tasks[i])))
                self.actors.append(actor)

        while True in [actor.is_alive() for actor in self.actors]:
            await asyncio.sleep(1)

        await self._arbiter_last_task()
        await asyncio.sleep(5)

        try:
            arbiter().stop()
        except PermissionError:  # Windows
            quit()
Пример #2
0
 async def _work(self, a=None):
     if a is None:
         a = await spawn(name='greeter')
     if names:
         name = names.pop()
         await send(a, 'greetme', {'name': name})
         self._loop.call_later(1, self, a)
     else:
         arbiter().stop()
Пример #3
0
async def app():
    # Spawn a new actor
    proxy = await spawn(name='actor1')
    print(proxy.name)
    # Execute inner method in actor1
    result = await send(proxy, 'run', inner_method)
    print(result)

    await send(proxy, 'run', set_value, 10)
    value = await send(proxy, 'run', get_value)
    print(value)

    # Stop the application
    arbiter().stop()
Пример #4
0
    def __init__(self, transport_loop):
        """Initialize member variables."""
        self.arbiter = arbiter(start=self._start, stopping=self._stop)

        self.image_plotter = Plotter()
        self.camera = Camera(image_receivers=[self.image_plotter])

        self.protocol = Protocol('Y-Axis', 'y')
        self.translator = BasicTranslator(message_receivers=[self.protocol])
        self.protocol.command_receivers.append(self.translator)
        self.response_receiver = ResponseReceiver(
            response_receivers=[self.translator])
        self.transport_manager = TransportManager(
            self.arbiter,
            transport_loop,
            response_receiver=self.response_receiver)
        self.translator.serialized_message_receivers.append(
            self.transport_manager.command_sender)
        self.batch_execution_manager = BatchExecutionManager(
            self.arbiter,
            self.transport_manager.command_sender,
            self.test_routine,
            header=batch.OUTPUT_HEADER,
            ready_waiter=self.transport_manager.connection_synchronizer.
            wait_connected)
        print('Showing webcam display...')
        self.image_plotter.show()
Пример #5
0
    def __call__(self, argv, start=True, get_app=False):
        self.app.callable.command = self.name
        app = self.app
        server = self.pulsar_app(argv, self.wsgiApp,
                                 server_software=app.config['SERVER_NAME'])
        if server.cfg.nominify:
            app.params['MINIFIED_MEDIA'] = False

        if start and not server.logger:   # pragma    nocover
            if not get_actor():
                clear_logger()
            app._started = server()
            app.fire_event('on_start', data=server)
            arbiter().start()

        if not start:
            return app if get_app else server
 def __init__(self, transport_loop):
     """Initialize member variables."""
     self.arbiter = arbiter(start=self._start, stopping=self._stop)
     self.translator = BasicTranslator()
     self.response_receiver = ResponseReceiver(
         response_receivers=[self.translator])
     self.transport_manager = TransportManager(
         self.arbiter,
         transport_loop,
         response_receiver=self.response_receiver)
     self.translator.serialized_message_receivers.append(
         self.transport_manager.command_sender)
     self.command_sender = self.transport_manager.command_sender
     self.connection_synchronizer = self.transport_manager.connection_synchronizer
     self.execution_managers = []
Пример #7
0
    async def _arbiter_work(self):
        actors = []

        for i in range(self._actors_count):
            actor_name = 'actor{}'.format(i)
            print(get_actor().name + ': Tworzę aktora ' + actor_name + '...')

            actor = await spawn(name=actor_name,
                                start=partial(
                                    Agency._init_actor,
                                    init_func=partial(self._actor_init_task),
                                    last_job=partial(self._actor_last_task)))
            actors.append(actor)

        while True in [actor.is_alive() for actor in actors]:
            await asyncio.sleep(1)

        await self._arbiter_last_task()
        await asyncio.sleep(5)

        try:
            arbiter().stop()
        except PermissionError:  # Windows
            quit()
Пример #8
0
 def __init__(self, transport_loop):
     """Initialize member variables."""
     self.arbiter = arbiter(start=self._start, stopping=self._stop)
     self.response_printer = SerializedMessagePrinter(
         prefix=batch.RESPONSE_PREFIX)
     self.command_printer = SerializedMessagePrinter(prefix='  Sending: ')
     self.response_receiver = ResponseReceiver(
         response_receivers=[self.response_printer])
     self.transport_manager = TransportManager(
         self.arbiter,
         transport_loop,
         response_receiver=self.response_receiver)
     self.batch_execution_manager = BatchExecutionManager(
         self.arbiter,
         self.transport_manager.command_sender,
         self.test_routine,
         header=batch.OUTPUT_HEADER,
         ready_waiter=self.transport_manager.connection_synchronizer.
         wait_connected)
Пример #9
0
def wait_for_stop(test, aid, terminating=False):
    '''Wait for an actor to stop'''
    actor = arbiter()
    waiter = create_future(loop=actor._loop)

    def remove():
        test.assertEqual(actor.event('periodic_task').unbind(check), 1)
        waiter.set_result(None)

    def check(caller, **kw):
        test.assertEqual(caller, actor)
        if not terminating:
            test.assertFalse(aid in actor.managed_actors)
        elif aid in actor.managed_actors:
            return
        actor._loop.call_soon(remove)

    actor.event('periodic_task').bind(check)
    return waiter
Пример #10
0
def wait_for_stop(test, aid, terminating=False):
    '''Wait for an actor to stop'''
    actor = arbiter()
    waiter = create_future(loop=actor._loop)

    def remove():
        test.assertEqual(actor.event('periodic_task').unbind(check), 1)
        waiter.set_result(None)

    def check(caller, **kw):
        test.assertEqual(caller, actor)
        if not terminating:
            test.assertFalse(aid in actor.managed_actors)
        elif aid in actor.managed_actors:
            return
        actor._loop.call_soon(remove)

    actor.event('periodic_task').bind(check)
    return waiter
Пример #11
0
 def __init__(self, transport_loop):
     """Initialize member variables."""
     self.arbiter = arbiter(start=self._start, stopping=self._stop)
     self.command_printer = MessagePrinter(prefix='  Sending: ')
     self.echo_response_printer = MessagePrinter(
         prefix=('\t' * batch.OUTPUT_WIDTH + '[Echo]\t')
     )
     self.reset_response_printer = MessagePrinter(
         prefix=('\t' * batch.OUTPUT_WIDTH + '[Reset]\t')
     )
     self.version_response_printer = MessagePrinter(
         prefix=('\t' * batch.OUTPUT_WIDTH + '[Version]\t')
     )
     self.builtin_led_response_printer = MessagePrinter(
         prefix=('\t' * batch.OUTPUT_WIDTH + '[BuiltinLED]\t')
     )
     self.response_dispatcher = Dispatcher(
         receivers={
             'e': [self.echo_response_printer],
             'r': [self.reset_response_printer]
         },
         prefix_receivers={
             'v': [self.version_response_printer],
             'l': [self.builtin_led_response_printer],
         }
     )
     self.translator = BasicTranslator(
         message_receivers=[self.response_dispatcher]
     )
     self.response_receiver = ResponseReceiver(
         response_receivers=[self.translator]
     )
     self.transport_manager = TransportManager(
         self.arbiter, transport_loop, response_receiver=self.response_receiver
     )
     self.translator.serialized_message_receivers.append(
         self.transport_manager.command_sender
     )
     self.batch_execution_manager = BatchExecutionManager(
         self.arbiter, self.transport_manager.command_sender, self.test_routine,
         header=batch.OUTPUT_HEADER,
         ready_waiter=self.transport_manager.connection_synchronizer.wait_connected
     )
Пример #12
0
 def __init__(self, transport_loop):
     """Initialize member variables."""
     self.arbiter = arbiter(start=self._start, stopping=self._stop)
     self.response_printer = MessagePrinter(prefix=('\t' *
                                                    cli.CONSOLE_WIDTH))
     self.translator = BasicTranslator(
         message_receivers=[self.response_printer])
     self.response_receiver = ResponseReceiver(
         response_receivers=[self.translator])
     self.transport_manager = TransportManager(
         self.arbiter,
         transport_loop,
         response_receiver=self.response_receiver)
     self.executor = concurrent.futures.ThreadPoolExecutor(max_workers=1)
     self.console_manager = ConsoleManager(
         self.arbiter,
         self.transport_manager.command_sender,
         self.translator,
         console_header=cli.CONSOLE_HEADER,
         executor=self.executor,
         ready_waiter=self.transport_manager.connection_synchronizer.
         wait_connected)
Пример #13
0
 def __init__(self, transport_loop):
     """Initialize member variables."""
     self.arbiter = arbiter(start=self._start, stopping=self._stop)
     self.echo_response_printer = MessagePrinter(
         prefix=('\t' * cli.CONSOLE_WIDTH + '[Echo]\t'))
     self.reset_response_printer = MessagePrinter(
         prefix=('\t' * cli.CONSOLE_WIDTH + '[Reset]\t'))
     self.version_response_printer = MessagePrinter(
         prefix=('\t' * cli.CONSOLE_WIDTH + '[Version]\t'))
     self.builtin_led_response_printer = MessagePrinter(
         prefix=('\t' * cli.CONSOLE_WIDTH + '[BuiltinLED]\t'))
     self.response_dispatcher = Dispatcher(
         receivers={
             'e': [self.echo_response_printer],
             'r': [self.reset_response_printer]
         },
         prefix_receivers={
             'v': [self.version_response_printer],
             'l': [self.builtin_led_response_printer],
         })
     self.translator = BasicTranslator(
         message_receivers=[self.response_dispatcher])
     self.response_receiver = ResponseReceiver(
         response_receivers=[self.translator])
     self.transport_manager = TransportManager(
         self.arbiter,
         transport_loop,
         response_receiver=self.response_receiver)
     self.executor = concurrent.futures.ThreadPoolExecutor(max_workers=1)
     self.console_manager = ConsoleManager(
         self.arbiter,
         self.transport_manager.command_sender,
         self.translator,
         console_header=cli.CONSOLE_HEADER,
         executor=self.executor,
         ready_waiter=self.transport_manager.connection_synchronizer.
         wait_connected)
Пример #14
0
 def __init__(self):
     a = arbiter()
     self._loop = a._loop
     self._loop.call_later(1, self)
     a.start()
Пример #15
0
from pulsar.api import arbiter, command, Config

names = ['john', 'luca', 'carl', 'jo', 'alex']


@command()
def greetme(request, message):
    echo = 'Hello {}!'.format(message['name'])
    request.actor.logger.warning(echo)
    return echo


class Greeter:
    def __call__(self, arb):
        self._greater_task = arb._loop.create_task(self._work(arb))

    async def _work(self, arb):
        a = await arb.spawn(name='greeter')
        while names:
            name = names.pop()
            await arb.send(a, 'greetme', {'name': name})
            await asyncio.sleep(1)
        arb.stop()


if __name__ == '__main__':
    cfg = Config()
    cfg.parse_command_line()
    arbiter(cfg=cfg, start=Greeter()).start()
Пример #16
0
    proxy = await spawn(name='actor1')
    print(proxy.name)
    # Execute inner method in actor1
    result = await send(proxy, 'run', inner_method)
    print(result)

    await send(proxy, 'run', set_value, 10)
    value = await send(proxy, 'run', get_value)
    print(value)

    # Stop the application
    arbiter().stop()


def inner_method(actor):
    return 42


def set_value(actor, value):
    actor.saved_value = value


def get_value(actor):
    return actor.saved_value


if __name__ == '__main__':
    cfg = Config()
    cfg.parse_command_line()
    arbiter(cfg=cfg, start=start).start()
Пример #17
0
 def __init__(self):
     main_arbiter = arbiter()
     self._loop = main_arbiter._loop  # kod z przykladu w dokumentacji
     self._loop.call_later(1, self)
     main_arbiter.start()
Пример #18
0
 def _initialize_arbiter(self):
     arbiter(cfg=Config(workers=4, timeout=120))
     arbiter().extra['gen'] = self._work_gen
     self._arbiter_init_task()
     arbiter()._loop.call_later(1, self)
     arbiter().start()
Пример #19
0
import asyncio
import json
import logging

import pulsar.api as pulsar

import pulsar.apps.wsgi as wsgi
from pulsar.apps.wsgi import AccessControl

import classifier_managers.network_manager, classifier_managers.bayes_manager, classifier_managers.svm_manager
from data_provider import init_data_provider

app = wsgi.Router('/')

arbiter = pulsar.arbiter()
algorithm_opts = ['svm', 'bayes', 'network', 'all']

svm_manager_actor, bayes_manager_actor, network_manager_actor = None, None, None
data_provider = None


async def spawn_managers(algo='all'):
    global arbiter, svm_manager_actor, bayes_manager_actor, network_manager_actor

    if not svm_manager_actor and algo in ['svm', 'all']:
        svm_manager_actor = await pulsar.spawn(name='svm_manager_actor',
                                               aid='svm_manager_actor')

    if not bayes_manager_actor and algo in ['bayes', 'all']:
        bayes_manager_actor = await pulsar.spawn(name='bayes_manager_actor',
                                                 aid='bayes_manager_actor')
Пример #20
0
    proxy = await spawn(name='actor1')
    print(proxy.name)
    # Execute inner method in actor1
    result = await send(proxy, 'run', inner_method)
    print(result)

    await send(proxy, 'run', set_value, 10)
    value = await send(proxy, 'run', get_value)
    print(value)

    # Stop the application
    arbiter.stop()


def inner_method(actor):
    return 42


def set_value(actor, value):
    actor.saved_value = value


def get_value(actor):
    return actor.saved_value


if __name__ == '__main__':
    cfg = Config()
    cfg.parse_command_line()
    arbiter(cfg=cfg, start=start).start()
Пример #21
0
from pulsar.api import arbiter
from arbiter_control import *

if __name__ == '__main__':
    arbiter(start=ArbiterControl()).start()
Пример #22
0

names = ['john', 'luca', 'carl', 'jo', 'alex']


@command()
def greetme(request, message):
    echo = 'Hello {}!'.format(message['name'])
    request.actor.logger.warning(echo)
    return echo


class Greeter:

    def __call__(self, arb):
        self._greater_task = arb._loop.create_task(self._work(arb))

    async def _work(self, arb):
        a = await arb.spawn(name='greeter')
        while names:
            name = names.pop()
            await arb.send(a, 'greetme', {'name': name})
            await asyncio.sleep(1)
        arb.stop()


if __name__ == '__main__':
    cfg = Config()
    cfg.parse_command_line()
    arbiter(cfg=cfg, start=Greeter()).start()
Пример #23
0
'''Write Hello there! every second
'''
from pulsar.api import arbiter


def hello(actor, **kw):
    print('Hello there!')
    actor._loop.call_later(1, hello, actor)


if __name__ == '__main__':
    arbiter(start=hello).start()