Documentation for pulsar 0.9.2. For development docs, go here.
To use actors in pulsar you need to start the Arbiter, a very special actor which controls the life of all actors spawned during the execution of your code.
The obtain the arbiter:
>>> from pulsar import arbiter
>>> a = arbiter()
>>> a.is_running()
False
Note that the arbiter is a singleton, therefore calling arbiter()
multiple times always return the same object.
To run the arbiter:
>>> a.start()
This command will start the arbiter event loop, and therefore no more inputs are read from the command line!
We take a look on how to spawn an actor which echos us when we send it a message. The first method for achieving this is to write an actor command:
from pulsar import arbiter, task, command, spawn, send
names = ['john', 'luca', 'carl', 'jo', 'alex']
@command()
def greetme(request, message):
echo = 'Hello {}!'.format(message['name'])
request.actor.logger.info(echo)
return echo
class Greeter:
def __init__(self):
a = arbiter()
self._loop = a._loop
self._loop.call_later(1, self)
a.start()
@task
def __call__(self, a=None):
if a is None:
a = yield spawn(name='greeter')
if names:
name = names.pop()
send(a, 'greetme', {'name': name})
self._loop.call_later(1, self, a)
else:
arbiter().stop()
if __name__ == '__main__':
Greeter()