Tool for agent ecosystem
The goal of this project is to facilitate the creation of microservices interacting via a signal bus and/or queue broker.
The philosophy of this project is to present a microservice as a software agent that directly interacts only with queues and the event bus, and not with other microservices.
Tool is intended for developing:
- distributed apps with event-driven architecture
- distributed apps with data-driven architecture
- multi-processors apps
Tool provide features:
- running a periodical tasks (interval or as CRON)
- specification of signals (events), their sending and receiving via the bus (aioredis)
- description of queues, sending and receiving messages via the queue broker (aioamqp, kafka, aioredis)
- limited RPC via signal bus
- launching sub-services (in the same process)
- launching a group of microagents (each in a separate process)
- mocks for bus and broker
See MicroAgent documentation.
class Agent(MicroAgent): @on('pre_start') async def setup(self): pass # init connections to DB, REDIS, SMTP and other services @periodic(period=5) async def refresh_cache(self): pass # do something periodicly @cron('0 */4 * * *') async def send_report(self): pass # do something by schedule # subscribe to signals (events) @receiver(signals.user_updated, signals.user_deleted) async def send_notification(self, **kwargs): # send signal (event) to bus await self.bus.check_something.send(sender='agent', **kwargs) # message consumer from queue @consumer(queues.mailer) async def send_emails(self, **kwargs): # send message to queue await self.broker.statistic_collector.send(kwargs) async def main(): bus = AIORedisSignalBus('redis://localhost/7') broker = AIORedisBroker('redis://localhost/7') # usage bus and broker separate from agent await bus.started.send('user_agent') await broker.mailer(data) agent = Agent(bus=bus, broker=broker) await agent.start()
With aioredis backend provide signal bus and list-based queues:
pip install 'microagent[aioredis]'
With aioamqp backend provide queues over AMQP (RabbitMQ):
pip install 'microagent[amqp]'
With kafka backend provide queues over Kafka (experemental):
pip install 'microagent[kafka]'
With pulsar backend provide signal bus (Redis) and list-based queues (Redis):
pip install 'microagent[pulsar]'
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size microagent-1.2-py3-none-any.whl (31.4 kB)||File type Wheel||Python version py3||Upload date||Hashes View|
|Filename, size microagent-1.2.tar.gz (25.6 kB)||File type Source||Python version None||Upload date||Hashes View|