forked from goodboy/tractor
1
0
Fork 0

Simplify and re-org the intro section

init_sphinx_docs
Tyler Goodlet 2020-02-10 11:04:48 -05:00
parent d6abfa774a
commit cd06298476
1 changed files with 51 additions and 52 deletions

View File

@ -5,7 +5,7 @@
tractor tractor
======= =======
An async-native "`actor model`_" built on trio_ and multiprocessing_. A `structured concurrent`_, async-native "`actor model`_" built on trio_ and multiprocessing_.
.. toctree:: .. toctree::
:maxdepth: 2 :maxdepth: 2
@ -22,10 +22,12 @@ An async-native "`actor model`_" built on trio_ and multiprocessing_.
.. _cancellation: https://trio.readthedocs.io/en/latest/reference-core.html#cancellation-and-timeouts .. _cancellation: https://trio.readthedocs.io/en/latest/reference-core.html#cancellation-and-timeouts
.. _channels: https://en.wikipedia.org/wiki/Channel_(programming) .. _channels: https://en.wikipedia.org/wiki/Channel_(programming)
.. _chaos engineering: http://principlesofchaos.org/ .. _chaos engineering: http://principlesofchaos.org/
.. _structured concurrent: https://trio.discourse.group/t/concise-definition-of-structured-concurrency/228
``tractor`` is an attempt to bring trionic_ `structured concurrency`_ to ``tractor`` is an attempt to bring trionic_ `structured concurrency`_ to
distributed multi-core Python. distributed multi-core Python; it aims to be the Python multi-processing
framework *you always wanted*.
``tractor`` lets you spawn ``trio`` *"actors"*: processes which each run ``tractor`` lets you spawn ``trio`` *"actors"*: processes which each run
a ``trio`` scheduled task tree (also known as an `async sandwich`_). a ``trio`` scheduled task tree (also known as an `async sandwich`_).
@ -34,6 +36,53 @@ sharing any state. This model allows for highly distributed software
architecture which works just as well on multiple cores as it does over architecture which works just as well on multiple cores as it does over
many hosts. many hosts.
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`_.
.. _messages: https://en.wikipedia.org/wiki/Message_passing
.. _trio docs: https://trio.readthedocs.io/en/latest/
.. _blog post: https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/
.. _structured concurrency: https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/
.. _3 axioms: https://en.wikipedia.org/wiki/Actor_model#Fundamental_concepts
.. _unrequirements: https://en.wikipedia.org/wiki/Actor_model#Direct_communication_and_asynchrony
.. _async generators: https://www.python.org/dev/peps/pep-0525/
Install
-------
No PyPi release yet!
::
pip install git+git://github.com/goodboy/tractor.git
Feel like saying hi?
--------------------
This project is very much coupled to the ongoing development of
``trio`` (i.e. ``tractor`` gets all its ideas from that brilliant
community). If you want to help, have suggestions or just want to
say hi, please feel free to ping me on the `trio gitter channel`_!
.. _trio gitter channel: https://gitter.im/python-trio/general
.. contents::
Philosophy
----------
Our tenets non-comprehensively include:
- strict adherence to the `concept-in-progress`_ of *structured concurrency*
- no spawning of processes *willy-nilly*; causality_ is paramount!
- (remote) errors `always propagate`_ back to the parent supervisor
- verbatim support for ``trio``'s cancellation_ system
- `shared nothing architecture`_
- no use of *proxy* objects or shared references between processes
- an immersive debugging experience
- anti-fragility through `chaos engineering`_
``tractor`` is an actor-model-*like* system in the sense that it adheres ``tractor`` is an actor-model-*like* system in the sense that it adheres
to the `3 axioms`_ but does not (yet) fulfil all "unrequirements_" in to the `3 axioms`_ but does not (yet) fulfil all "unrequirements_" in
practise. It is an experiment in applying `structured concurrency`_ practise. It is an experiment in applying `structured concurrency`_
@ -50,37 +99,6 @@ definitely not required). There is first class support for inter-actor
streaming using `async generators`_ and ongoing work toward a functional streaming using `async generators`_ and ongoing work toward a functional
reactive style for IPC. reactive style for IPC.
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`_.
.. _messages: https://en.wikipedia.org/wiki/Message_passing
.. _trio docs: https://trio.readthedocs.io/en/latest/
.. _blog post: https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/
.. _structured concurrency: https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/
.. _3 axioms: https://en.wikipedia.org/wiki/Actor_model#Fundamental_concepts
.. _unrequirements: https://en.wikipedia.org/wiki/Actor_model#Direct_communication_and_asynchrony
.. _async generators: https://www.python.org/dev/peps/pep-0525/
.. contents::
Philosophy
----------
``tractor`` aims to be the Python multi-processing framework *you always wanted*.
Its tenets non-comprehensively include:
- strict adherence to the `concept-in-progress`_ of *structured concurrency*
- no spawning of processes *willy-nilly*; causality_ is paramount!
- (remote) errors `always propagate`_ back to the parent supervisor
- verbatim support for ``trio``'s cancellation_ system
- `shared nothing architecture`_
- no use of *proxy* objects or shared references between processes
- an immersive debugging experience
- anti-fragility through `chaos engineering`_
.. warning:: ``tractor`` is in alpha-alpha and is expected to change rapidly! .. warning:: ``tractor`` is in alpha-alpha and is expected to change rapidly!
Expect nothing to be set in stone. Your ideas about where it should go Expect nothing to be set in stone. Your ideas about where it should go
are greatly appreciated! are greatly appreciated!
@ -88,15 +106,6 @@ Its tenets non-comprehensively include:
.. _concept-in-progress: https://trio.discourse.group/t/structured-concurrency-kickoff/55 .. _concept-in-progress: https://trio.discourse.group/t/structured-concurrency-kickoff/55
Install
-------
No PyPi release yet!
::
pip install git+git://github.com/goodboy/tractor.git
Examples Examples
-------- --------
Note, if you are on Windows please be sure to see the gotchas section Note, if you are on Windows please be sure to see the gotchas section
@ -619,13 +628,3 @@ Stuff I'd like to see ``tractor`` do real soon:
.. _asyncitertools: https://github.com/vodik/asyncitertools .. _asyncitertools: https://github.com/vodik/asyncitertools
.. _pdb++: https://github.com/antocuni/pdb .. _pdb++: https://github.com/antocuni/pdb
.. _capability-based security: https://en.wikipedia.org/wiki/Capability-based_security .. _capability-based security: https://en.wikipedia.org/wiki/Capability-based_security
Feel like saying hi?
--------------------
This project is very much coupled to the ongoing development of
``trio`` (i.e. ``tractor`` gets all its ideas from that brilliant
community). If you want to help, have suggestions or just want to
say hi, please feel free to ping me on the `trio gitter channel`_!
.. _trio gitter channel: https://gitter.im/python-trio/general