2018-07-06 06:34:11 +00:00
|
|
|
tractor
|
|
|
|
=======
|
2020-02-10 16:49:54 +00:00
|
|
|
A `structured concurrent`_, async-native "`actor model`_" built on trio_ and multiprocessing_.
|
2018-08-03 04:55:50 +00:00
|
|
|
|
2020-02-10 16:49:54 +00:00
|
|
|
|travis| |docs|
|
2018-07-06 06:34:11 +00:00
|
|
|
|
2020-02-10 16:49:54 +00:00
|
|
|
.. _actor model: https://en.wikipedia.org/wiki/Actor_model
|
|
|
|
.. _trio: https://github.com/python-trio/trio
|
|
|
|
.. _multiprocessing: https://en.wikipedia.org/wiki/Multiprocessing
|
|
|
|
.. _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
|
|
|
|
.. _structured concurrent: https://trio.discourse.group/t/concise-definition-of-structured-concurrency/228
|
2018-08-03 04:55:50 +00:00
|
|
|
|
|
|
|
|
2019-11-22 21:43:49 +00:00
|
|
|
``tractor`` is an attempt to bring trionic_ `structured concurrency`_ to
|
2020-02-10 16:49:54 +00:00
|
|
|
distributed multi-core Python; it aims to be the Python multi-processing
|
|
|
|
framework *you always wanted*.
|
2019-11-22 21:43:49 +00:00
|
|
|
|
|
|
|
``tractor`` lets you spawn ``trio`` *"actors"*: processes which each run
|
|
|
|
a ``trio`` scheduled task tree (also known as an `async sandwich`_).
|
|
|
|
*Actors* communicate by exchanging asynchronous messages_ and avoid
|
|
|
|
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.
|
|
|
|
|
2019-03-07 02:30:00 +00:00
|
|
|
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`_.
|
2018-07-06 06:34:11 +00:00
|
|
|
|
2018-08-03 04:55:50 +00:00
|
|
|
.. _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/
|
2018-09-21 00:30:57 +00:00
|
|
|
.. _structured concurrency: https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/
|
2020-02-10 16:49:54 +00:00
|
|
|
.. _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/
|
2018-07-12 19:18:02 +00:00
|
|
|
|
2019-01-21 16:56:33 +00:00
|
|
|
|
2018-07-12 19:18:02 +00:00
|
|
|
Install
|
|
|
|
-------
|
|
|
|
No PyPi release yet!
|
|
|
|
|
|
|
|
::
|
|
|
|
|
2019-04-28 14:41:24 +00:00
|
|
|
pip install git+git://github.com/goodboy/tractor.git
|
2018-07-06 06:34:11 +00:00
|
|
|
|
|
|
|
|
2019-01-17 04:19:29 +00:00
|
|
|
Feel like saying hi?
|
|
|
|
--------------------
|
|
|
|
This project is very much coupled to the ongoing development of
|
2020-09-24 14:04:56 +00:00
|
|
|
``trio`` (i.e. ``tractor`` gets most of its ideas from that brilliant
|
2019-01-17 04:19:29 +00:00
|
|
|
community). If you want to help, have suggestions or just want to
|
2020-09-24 14:04:56 +00:00
|
|
|
say hi, please feel free to reach us on in our `matrix channel`_. If
|
|
|
|
matrix seems too hip, we're also mostly all in the the `trio gitter
|
|
|
|
channel`_!
|
2019-01-17 04:19:29 +00:00
|
|
|
|
2018-07-06 06:34:11 +00:00
|
|
|
.. _trio gitter channel: https://gitter.im/python-trio/general
|
2020-09-24 14:04:56 +00:00
|
|
|
.. _matrix channel: https://matrix.to/#/!tractor:matrix.org
|
2020-02-10 16:49:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
.. |travis| image:: https://img.shields.io/travis/goodboy/tractor/master.svg
|
|
|
|
:target: https://travis-ci.org/goodboy/tractor
|
|
|
|
.. |docs| image:: https://readthedocs.org/projects/tractor/badge/?version=latest
|
|
|
|
:target: https://tractor.readthedocs.io/en/latest/?badge=latest
|
|
|
|
:alt: Documentation Status
|