forked from goodboy/tractor
Readme description bump after talks with multiple would-be users
parent
f8adbd73df
commit
42978bf9ac
36
README.rst
36
README.rst
|
@ -10,7 +10,7 @@ An async-native "`actor model`_" built on trio_ and multiprocessing_.
|
||||||
|
|
||||||
.. _actor model: https://en.wikipedia.org/wiki/Actor_model
|
.. _actor model: https://en.wikipedia.org/wiki/Actor_model
|
||||||
.. _trio: https://github.com/python-trio/trio
|
.. _trio: https://github.com/python-trio/trio
|
||||||
.. _multiprocessing: https://docs.python.org/3/library/multiprocessing.html
|
.. _multiprocessing: https://en.wikipedia.org/wiki/Multiprocessing
|
||||||
.. _trionic: https://trio.readthedocs.io/en/latest/design.html#high-level-design-principles
|
.. _trionic: https://trio.readthedocs.io/en/latest/design.html#high-level-design-principles
|
||||||
.. _async sandwich: https://trio.readthedocs.io/en/latest/tutorial.html#async-sandwich
|
.. _async sandwich: https://trio.readthedocs.io/en/latest/tutorial.html#async-sandwich
|
||||||
.. _always propagate: https://trio.readthedocs.io/en/latest/design.html#exceptions-always-propagate
|
.. _always propagate: https://trio.readthedocs.io/en/latest/design.html#exceptions-always-propagate
|
||||||
|
@ -21,17 +21,31 @@ An async-native "`actor model`_" built on trio_ and multiprocessing_.
|
||||||
.. _chaos engineering: http://principlesofchaos.org/
|
.. _chaos engineering: http://principlesofchaos.org/
|
||||||
|
|
||||||
|
|
||||||
``tractor`` is an attempt to bring trionic_ `structured concurrency`_ to distributed multi-core Python.
|
``tractor`` is an attempt to bring trionic_ `structured concurrency`_ to
|
||||||
|
distributed multi-core Python.
|
||||||
|
|
||||||
``tractor`` lets you spawn ``trio`` *"actors"*: processes which each run a ``trio`` scheduler and task
|
``tractor`` lets you spawn ``trio`` *"actors"*: processes which each run
|
||||||
tree (also known as an `async sandwich`_). *Actors* communicate by exchanging asynchronous messages_ over
|
a ``trio`` scheduled task tree (also known as an `async sandwich`_).
|
||||||
channels_ and avoid sharing any state. This model allows for highly distributed software architecture
|
*Actors* communicate by exchanging asynchronous messages_ and avoid
|
||||||
which works just as well on multiple cores as it does over many hosts.
|
sharing any state. This model allows for highly distributed software
|
||||||
|
architecture which works just as well on multiple cores as it does over
|
||||||
|
many hosts.
|
||||||
|
|
||||||
``tractor`` is an actor-model-*like* system in the sense that it adheres to the `3 axioms`_ but does
|
``tractor`` is an actor-model-*like* system in the sense that it adheres
|
||||||
not (yet) fufill all "unrequirements_" in practice. The API and design takes inspiration from pulsar_ and
|
to the `3 axioms`_ but does not (yet) fulfil all "unrequirements_" in
|
||||||
execnet_ but attempts to be more focussed on sophistication of the lower level distributed architecture as
|
practise. It is an experiment in applying `structured concurrency`_
|
||||||
well as have first class support for streaming using `async generators`_.
|
constraints on a parallel processing system where multiple Python
|
||||||
|
processes exist over many hosts but no process can outlive its parent.
|
||||||
|
In `erlang` parlance, it is an architecture where every process has
|
||||||
|
a mandatory supervisor enforced by the type system. The API design is
|
||||||
|
almost exclusively inspired by trio_'s concepts and primitives (though
|
||||||
|
we often lag a little). As a distributed computing system `tractor`
|
||||||
|
attempts to place sophistication at the correct layer such that
|
||||||
|
concurrency primitives are powerful yet simple, making it easy to build
|
||||||
|
complex systems (you can build a "worker pool" architecture but it's
|
||||||
|
definitely not required). There is first class support for inter-actor
|
||||||
|
streaming using `async generators`_ and ongoing work toward a functional
|
||||||
|
reactive style for IPC.
|
||||||
|
|
||||||
The first step to grok ``tractor`` is to get the basics of ``trio`` down.
|
The first step to grok ``tractor`` is to get the basics of ``trio`` down.
|
||||||
A great place to start is the `trio docs`_ and this `blog post`_.
|
A great place to start is the `trio docs`_ and this `blog post`_.
|
||||||
|
@ -56,7 +70,7 @@ Its tenets non-comprehensively include:
|
||||||
|
|
||||||
- strict adherence to the `concept-in-progress`_ of *structured concurrency*
|
- strict adherence to the `concept-in-progress`_ of *structured concurrency*
|
||||||
- no spawning of processes *willy-nilly*; causality_ is paramount!
|
- no spawning of processes *willy-nilly*; causality_ is paramount!
|
||||||
- (remote) errors `always propagate`_ back to the parent / caller
|
- (remote) errors `always propagate`_ back to the parent supervisor
|
||||||
- verbatim support for ``trio``'s cancellation_ system
|
- verbatim support for ``trio``'s cancellation_ system
|
||||||
- `shared nothing architecture`_
|
- `shared nothing architecture`_
|
||||||
- no use of *proxy* objects or shared references between processes
|
- no use of *proxy* objects or shared references between processes
|
||||||
|
|
Loading…
Reference in New Issue