Quick Start Guide

Installation

Installing Dependencies

FireX is built on top of Celery, which requires a broker for message exchange. Currently, the only FireX-supported broker is Redis. While most FireX dependencies are installed automatically via pip when FireX itself is installed, it is necessary to have Redis installed before you can run FireX. By default, FireX will look for redis binaries included in PATH. You can verify that redis is installed by running the following command.

> which redis-server

If redis is installed but not in your PATH, it can be provided to FireX explicitly by setting the following environment variable:

> export redis_bin_dir=<path to redis directory containing the redis binaries>

For help installing Redis, please visit the Redis documentation.

Installing FireX

Installing FireX is quick and straightforward. Simply use pip in a Python 3.7 environment to install the latest packages.

> pip install firexapp[flame]

You can confirm that FireX is now installed by running basic FireX commands:

firexapp list --microservices
firexapp info sleep

Execution

Executing a Trivial Service

FireX internally defines a do-nothing service called nop. The service can be executed by running:

> $ firexapp submit --chain nop
[11:42:57][HOSTNAME] FireX ID: FireX-username-210122-114257-22938
[11:42:57][HOSTNAME] Logs: /tmp/FireX-username-210122-114257-22938
[11:43:00][HOSTNAME] Flame: http://HOSTNAME:59535

Follow the Flame link to visualize the FireX run and see that the nop service was executed. Of course, since the service is trivial (i.e. receives no arguments, produces no results, and has no side-effects), there isn’t much to be seen, but running a nop verifies your FireX install is functioning.

Executing Your Own Service

The previous section showed how to run the built-in, trivial nop service. You can easily run your own service by creating a file called hello.py and writing the following simple service definition:

from firexapp.engine.celery import app

@app.task
def hello_world():
    return 'Hello World!'

FireX can be told to load this file via the --plugins argument. The full command to invoke our new hello_world service is therefore:

> firexapp submit --chain hello_world --plugins hello.py
[11:33:42][HOSTNAME] FireX ID: FireX-username-210122-113342-5274
[11:33:42][HOSTNAME] Logs: /tmp/FireX-username-210122-113342-5274
External module hello imported
[11:33:45][HOSTNAME] Flame: http://HOSTNAME:63749

Next Steps

This page describes the bare minimum to get started with FireX – there is still much more to discover! Take a look at the programming guide to learn about the most common FireX APIs.