All Projects → celery → cell

celery / cell

Licence: BSD-3-Clause license
actor framework for Kombu

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects
Makefile
30231 projects

Projects that are alternatives of or similar to cell

Kombu
Kombu is a messaging library for Python.
Stars: ✭ 2,263 (+3000%)
Mutual labels:  celery, kombu
celery-connectors
Want to handle 100,000 messages in 90 seconds? Celery and Kombu are that awesome - Multiple publisher-subscriber demos for processing json or pickled messages from Redis, RabbitMQ or AWS SQS. Includes Kombu message processors using native Producer and Consumer classes as well as ConsumerProducerMixin workers for relay publish-hook or caching
Stars: ✭ 37 (-49.32%)
Mutual labels:  celery, kombu
Cpp Rotor
Event loop friendly C++ actor micro-framework
Stars: ✭ 111 (+52.05%)
Mutual labels:  actor
logtoes
Demo of Asynchronous pattern (worker) using Python Flask & Celery
Stars: ✭ 49 (-32.88%)
Mutual labels:  celery
dispatcher
Dispatcher is an asynchronous task queue/job queue based on distributed message passing.
Stars: ✭ 60 (-17.81%)
Mutual labels:  celery
Qpcpp
QP/C++ real-time embedded framework/RTOS for embedded systems based on active objects (actors) and hierarchical state machines
Stars: ✭ 124 (+69.86%)
Mutual labels:  actor
young-crawler
scala结合actor编写的分布式网络爬虫
Stars: ✭ 15 (-79.45%)
Mutual labels:  actor
Earl
Service Objects for Crystal (Agents, Artists, Supervisors, Pools, ...)
Stars: ✭ 89 (+21.92%)
Mutual labels:  actor
kamon-akka
Kamon Instrumentation for Akka
Stars: ✭ 44 (-39.73%)
Mutual labels:  actor
celery-monitor
The celery monitor app was written by Django.
Stars: ✭ 92 (+26.03%)
Mutual labels:  celery
celery-prometheus-exporter
Celery prometheus metrics exporter revisited
Stars: ✭ 25 (-65.75%)
Mutual labels:  celery
Bastion
Highly-available Distributed Fault-tolerant Runtime
Stars: ✭ 2,333 (+3095.89%)
Mutual labels:  actor
Xactor
Xactor is a rust actors framework based on async-std
Stars: ✭ 146 (+100%)
Mutual labels:  actor
celery-batches
Celery Batches allows processing of multiple Celery task requests together
Stars: ✭ 58 (-20.55%)
Mutual labels:  celery
Vertex
Vertex is a distributed, ultimately consistent, event traceable cross platform framework based on Orleans, which is used to build high-performance, high throughput, low latency, scalable distributed applications
Stars: ✭ 117 (+60.27%)
Mutual labels:  actor
elfo
Your next actor system
Stars: ✭ 38 (-47.95%)
Mutual labels:  actor
Qpn
QP-nano real-time embedded framework/RTOS for embedded systems based on active objects (actors) and hierarchical state machines
Stars: ✭ 107 (+46.58%)
Mutual labels:  actor
Sobjectizer
An implementation of Actor, Publish-Subscribe, and CSP models in one rather small C++ framework. With performance, quality, and stability proved by years in the production.
Stars: ✭ 172 (+135.62%)
Mutual labels:  actor
django-telegram-bot
My sexy Django + python-telegram-bot + Celery + Redis + Postgres + Dokku + GitHub Actions template
Stars: ✭ 470 (+543.84%)
Mutual labels:  celery
wactor
Ultra minimal actor API wrapper for lunatic
Stars: ✭ 25 (-65.75%)
Mutual labels:  actor

cell - Actor framework

Version: 0.0.3

Synopsis

cell is an actor framework for Kombu and celery .

What is an Actor

The actor model was first proposed by Carl Hewitt in 1973 [1] and was improved, among others, by Gul Agha [2].

An Actor is an entity (a class in cell), that has a mailbox and a behaviour. Actors communicate between each other only by exchanging messages. Upon receiving a message, the behaviour of the actor is executed, upon which the actor can send a number of messages to other actors, create a number of actors or change its internal state.

Cell supports:

  • distributed actors (actors are started on celery workers)
  • Remoting: Communicating with actors running on other hosts
  • Routers: it supports round-robin, direct and broadcast delivery of actor messages. You can create custom routers on top of it, implementing Actors as routers (joiner, collector, gatherer).

Why should I use it?

In a nutshell:

  • Horizontal scalability with actors across multiple nodes
  • You get asynchronous message passing for free
  • If you are already using celery, all comes for free, no additional setup is required
  • Control over the tasks distribution
  • More flexible configurations of nodes
  • Well known abstraction
  • Easy learning curve (check teh 30 sec video to get you started)

if you are a celery user:

  • You can use Actors, instead of task-based classes:

(You can program with classes and not tasks)

  • Stateful execution. You can link actors together and their execution, creating complex workflows.

You can control the execution per actor/not per worker.

  • Better control over work distribution (You can target the same worker for a given task):
adder.send.add(2, 2)
adder.send.add(2, 2)

If you are a general Pythonist

Having a framework for distributed actor management in your toolbox is a must, bacause:

  • simplify the distributed processing of tasks.
  • vertical scalability:
  • Fair work distribution, load balancing, sticky routing

Installation

You can install cell either via the Python Package Index (PyPI) or from source.

To install using pip,:

$ pip install cell

To install using easy_install,:

$ easy_install cell

If you have downloaded a source tarball you can install it by doing the following,:

$ python setup.py build
# python setup.py install # as root

Quick how-to

If you are too impatient to start, here are the 3 quick steps you need to run 'Hello, world!' in cell: (You can also check the Demo video)

  • Define an Actor
from cell.actors import Actor

class GreetingActor(Actor):
    class state:
        def greet(self, who='world'):
            print 'Hello %s' % who
  • Start celery with an amqp broker support
>>> celery worker -b 'pyamqp://guest@localhost'
  • Invoke a method on an actor instance:
from cell.agents import dAgent
from kombu import Connection
from examples.greeting import GreetingActor

connection = Connection('amqp://guest:guest@localhost:5672//')
agent = dAgent(connection)
greeter = agent.spawn(GreetingActor)
greeter.call('greet')

The full source code of the example from :py:mod:`examples` module. To understand what is going on check the :ref:`Getting started <getting-started>` section.

Getting Help

Mailing list

Join the celery-users mailing list.

Bug tracker

If you have any suggestions, bug reports or annoyances please report them to our issue tracker at http://github.com/celery/cell/issues/

Contributing

Development of cell happens at Github: http://github.com/celery/cell

You are highly encouraged to participate in the development. If you don't like Github (for some reason) you're welcome to send regular patches.

License

This software is licensed under the New BSD License. See the LICENSE file in the top distribution directory for the full license text.

Copyright

Copyright (C) 2011-2013 GoPivotal, Inc.

cell as part of the Tidelift Subscription

The maintainers of cell and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/pypi-cell?utm_source=pypi-cell&utm_medium=referral&utm_campaign=readme&utm_term=repo)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].