TopChef
TopChef is an asynchronous task queue that allows posting jobs for services defined at runtime. Service contracts are enforced using JSON schema, and the functionality is exposed through a REST API. This project solves the problem of running and queueing remote procedure calls between computers over an HTTP layer.
Please report bugs, feature requests, and other issues to the issue tracker. For support, please open an issue in the issue tracker.
This project supports Python versions 3.5 and 3.6.
Running TopChef
The easiest way to run TopChef is via the docker container. To run this, install docker and run
docker pull topchef/topchef
from the command line. This will download the latest build from the
master
branch of this repository. In order to run the container, run
docker run -i -t -p <port>:80 topchef/topchef
Where <port>
is the port on which you want the container to run. If you
want to configure the application, pass in the required environment
variables after an -e
flag. For instance, to set the database URI, run
docker run -i -t -p <port>:80 -e DATABASE_URI=<database_uri> topchef/topchef
The Docker container runs TopChef via Apache using mod_wsgi. If a database URI is not provided, the container will create its own SQLite database inside the container.
The Flask Development Server
Flask provides a development web server. To run this server, clone this repository onto your computer using
git clone https://github.com/TopChef/TopChef
cd
into that directory, and run
pip install .
This will install the core dependencies. Create a server database using
python topchef create-db
This will create a test sqlite database in the repository's main directory
titled db.sqlite3
. Finally, run the server using
python topchef runserver
This will start a development server at http://localhost:5000
.
Running The Tests
TopChef maintains a unit, integration, and acceptance test suite. In order to run the unit tests, clone the repository and run
pip install -r requirements.txt
In order to install the package dependencies. Finally, run
nosetests test/unit --processes=-1 --process-timeout=180 --process-restartworker
To run the unit tests on all the cores available on the processor. Make sure to set a long (about 3 minutes) timeout on tests, as hypothesis can take a long time to generate random examples for a test. Some test cases can take up to a minute to finish.
Maintainers
- Michal Kononenko (@michalkononenko)
- Thomas Alexander (@whitewhim2718)