PageRenderTime 26ms CodeModel.GetById 28ms RepoModel.GetById 1ms app.codeStats 0ms

/README.rst

https://github.com/peplin/astral
ReStructuredText | 114 lines | 88 code | 26 blank | 0 comment | 0 complexity | 23afd2aab4fb9d2d10035357884c63b5 MD5 | raw file
  1. astral
  2. ==============
  3. .. _astral: http://github.com/peplin/astral
  4. .. _Python: http://python.org/
  5. astral_ is a peer-to-peer content distribution network specifically built for
  6. live, streaming media. Without IP multicast, if content producers want to stream
  7. live events to consumers, they are forced to create separate feeds for each
  8. user. A peer-to-peer approach is more efficient and offloads much of the work
  9. from the origin servers to the edges of the network.
  10. This project was completed over the course of the Spring 2011 semester in the
  11. Distributed Systems (18-842) course at Carnegie Mellon University, taught by
  12. Professor Bill Nace.
  13. For a more in-depth writeup, see this article_. This source is available under
  14. the BSD open source license.
  15. Requirements
  16. ------------
  17. Astral requires Python_ 2.6 or greater. The Python package dependencies are:
  18. - tornado >= 1.2.1
  19. - sqlalchemy >= 0.6.6
  20. - Elixir >= 0.7.1
  21. - restkit >= 3.2.0
  22. Development Requirements
  23. -------------------------
  24. .. _nosetests: http://somethingaboutorange.com/mrl/projects/nose/0.11.2/
  25. .. _mockito-python: http://code.google.com/p/mockito-python/
  26. The astral test suite requires:
  27. - nosetests_ >= 0.11.4
  28. - mockito-python_ >= 0.5.10
  29. - python-faker >= 0.2.3
  30. - factory-boy >= 1.0.0
  31. Installation
  32. ------------
  33. Astral is currently available only as a source distribution, so to install you
  34. must clone the source from GitHub and install::
  35. $ git clone git://github.com/peplin/astral.git
  36. $ cd astral
  37. $ pip install .
  38. Usage
  39. ------
  40. .. _astral-web: http://github.com/peplin/astral-web
  41. Astral is a two part system, made up of a network of Astral nodes and a single,
  42. centralized web application (astral-web_). At the moment, an instance of the web
  43. application is running at http://astral.rhubarbtech.com, and the Python package
  44. is configured to connect to this address by default.
  45. This repository contains the application to run an individual node, one that is
  46. sending, consuming or seeding a video stream in the network.
  47. Use the ``astralnode`` executable to start the node::
  48. $ astralnode -h
  49. Usage: astralnode [options]
  50. Options:
  51. -s SETTINGS_MODULE, --settings=SETTINGS_MODULE
  52. Name of the module to read settings from.
  53. -D DAEMONIZE, --daemonize=DAEMONIZE
  54. Daemonize the application
  55. -u UUID_OVERRIDE, --uuid=UUID_OVERRIDE
  56. UUID override, for testing multiple nodes on one box
  57. -l UPSTREAM_LIMIT, --upstream-limit=UPSTREAM_LIMIT
  58. Maximum upload bandwidth to use for forwarding streams
  59. --version show program's version number and exit
  60. -h, --help show this help message and exit
  61. Running ``astralnode`` with no options will set it to listen on port 8000, and
  62. does not fork to the background.
  63. Summary of Features
  64. ===================
  65. .. _article: http://christopherpeplin.com/2011/05/astral/
  66. - A central web application (astral-web_) exposes both HTML views for users as
  67. well as a JSON API for nodes to bootstrap themselves
  68. - Nodes bootstrap from static configuration files as well as from the central
  69. webapp
  70. - Nodes register with a primary supernode
  71. - Nodes promote themselves to supernode if none are available with sufficient
  72. capacity
  73. - Nodes failover to other supernodes if their choosen primary leaves the
  74. network, or optionally promote themselves if no others are available
  75. - Nodes request tickets for a stream, which is a promise from another node
  76. that it will forward the stream, using selective multicast (i.e. to
  77. supernodes only)
  78. - Users running a node can view a list of available streams in a web browser
  79. - Incoming forwarded streams failover to other providers if the sender leaves
  80. the network
  81. - Flash-based stream consumer in the web browser handles temporary breaks in the
  82. stream seamlessly
  83. - Nodes perform a proper shutdown by informing other nodes and stream receivers
  84. of their change in status
  85. - Stream tickets time out after a series of failed heartbeat messages, in order
  86. to accommodate improper node shutdown (i.e. unexpected failure)
  87. - Local node is controlled via Javascript with HTTP requests in the browser
  88. - Local node can also be controlled with HTTP requests from the command line