Reaction. ML serving & microservices.
Project description
Part of Catalyst Ecosystem. Project manifest.
Installation
Common installation:
pip install -U reaction
Getting started
consumer.py:
import asyncio from typing import List, Any from reaction.rpc import RabbitRPC class rpc(RabbitRPC): URL = 'amqp://user:password@host' @rpc() def sync_square(*values) -> List[float]: return [v ** 2 for v in values] @rpc() async def async_square(*values) -> List[float]: await asyncio.sleep(1) return [v ** 2 for v in values] if __name__ == '__main__': loop = asyncio.get_event_loop() loop.create_task(sync_square.consume()) loop.create_task(async_square.consume()) loop.run_forever()
client.py:
import asyncio from consumer import sync_square, async_square if __name__ == '__main__': loop = asyncio.get_event_loop() x = loop.run_until_complete(sync_square.call(2, 3)) y = loop.run_until_complete(async_square.call(4, 5, 6)) print(x) # 4, 9 print(y) # 16, 25, 36 loop.close()
Example
- Register telegram bot, achieve token
cd example && TG_TOKEN="telegram bot token goes here" docker-compose up --force-recreate --build
- RabbitMQ web ui: http://127.0.0.1:15672/#/
- user: admin
- password: j8XfG9ZDT5ZZrWTzw62q
- Docs (you can submit requests from web ui): http://127.0.0.1:8000/docs#/
- Redoc: http://127.0.0.1:8000/redoc
- Telegram bot is ready to classify ants & bees, but you have to send files "as a photo"
Telegram bot quick howto
Install async telegram client first:
$ pip install aiotg
Then create your bot:
tgbot.py
from consumer import async_square from aiotg import Bot, Chat bot = Bot(api_token='telegram bot token goes here') @bot.command('/start') async def start(chat: Chat, match): return chat.reply('Send me /square command with one float argument') @bot.command(r"/square (.+)") async def square_command(chat: Chat, match): val = match.group(1) try: val = float(val) square = await async_square.call(val) resp = f'Square for {val} is {square}' except: resp = 'Invalid number' return chat.reply(resp) bot.run()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size reaction-20.2-py2.py3-none-any.whl (10.9 kB) | File type Wheel | Python version py2.py3 | Upload date | Hashes View |
Filename, size reaction-20.2.tar.gz (6.6 kB) | File type Source | Python version None | Upload date | Hashes View |
Close
Hashes for reaction-20.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3c36fbe4a0d7d91a3bdcb339ed2775e18bc8e49edd077c03d20d257d4dcd100b |
|
MD5 | 795251d88a2db2aaadc7956851b5993c |
|
BLAKE2-256 | 759bc549eb02e2b5caf8e2dcfb6386fa82645ffaaf2e7fc3c6d682f0591d8187 |