Metadata-Version: 2.1
Name: event-isc
Version: 0.1.0
Summary: Library for inter-service event-based communication
Home-page: https://github.com/radiocut/event-isc/
Author: Guillermo Narvaja
Author-email: guillermo.narvaja@radiocut.fm
License: UNKNOWN
Project-URL: Bug Reports, https://github.com/radiocutfm/event-isc/issues
Project-URL: Funding, https://donate.pypi.org
Project-URL: Say Thanks!, https://saythanks.io/to/guillermo.narvaja%40radiocut.fm
Project-URL: Source, https://github.com/radiocutfm/event-isc/
Keywords: event inter-service-communication celery microservices
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4
Description-Content-Type: text/markdown
Provides-Extra: requests
Provides-Extra: celery
Provides-Extra: pika
Provides-Extra: dev
Provides-Extra: test
License-File: LICENSE.txt

# Inter-service event communication

This library handles inter (micro)services communication in a decoupled way using the event/observer pattern.

The code raises an event when something happens and that event fires notifications to the registered listeners.

Implemented notifications are:

1. Celery task
2. HTTP request


## YAML file configuration

Can be configured with a yaml file like this, passed as initialization argument or in environment variable EVENTISC_CONFIG


```yaml

name_prefix: myapp.
listeners:
- kind: http
  event_name: myapp.user_created
  url: http://notification-service.mycompany.com/send-welcome/
  requests_kwargs:
    auth: ["myuser", "password"]
  request_format: json
  data:
    user_id: "{event_data['user'].id}"
    email: "{event_data['user'].email}"
- kind: celery
  event_name_regex: myapp[.].*_created
  queue: foo_service
  task_name: foo_handle_created
  task_kwargs:
    event_name: {event_name}
    event_data: {event_data}
```


## Usage

```python

import eventisc

...
eventisc.trigger("user_created", {"user": user})  # Should fire both listeners

eventisc.trigger("foo_created", {"foo": "bar"})  # Should fire only celery

```



