Metadata-Version: 2.1
Name: taskfarm
Version: 0.3.0
Summary: database backed taskfarm controller
Home-page: https://github.com/mhagdorn/taskfarm
Author: Magnus Hagdorn
Author-email: magnus.hagdorn@ed.ac.uk
License: GPL3
Platform: UNKNOWN
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Programming Language :: Python :: 3
Classifier: Framework :: Flask
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: System :: Distributed Computing
Description-Content-Type: text/markdown
Requires-Dist: flask-httpauth
Requires-Dist: flask (>=1.0)
Requires-Dist: flask-sqlalchemy
Requires-Dist: itsdangerous
Requires-Dist: passlib
Requires-Dist: sqlalchemy
Provides-Extra: dev
Requires-Dist: flake8 ; extra == 'dev'
Provides-Extra: docs
Requires-Dist: sphinx (<4.0) ; extra == 'docs'
Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
Requires-Dist: sphinxcontrib.httpdomain ; extra == 'docs'
Provides-Extra: lint
Requires-Dist: flake8 (>=3.5.0) ; extra == 'lint'
Provides-Extra: testing
Requires-Dist: flask-testing ; extra == 'testing'
Requires-Dist: nose2 ; extra == 'testing'

taskfarm
========
This package solves the problem of managing a loosely coupled taskfarm where
there are many tasks and the workers are entitrly independent of each other.
Instead of using a farmer process a database is used to hand out new tasks to
the workers. The workers contact a web application via http(s) to get a new
task.

You can use the [taskfarm-worker](https://github.com/mhagdorn/taskfarm-worker)
to connect to the taskfarm service.

Setup
-----
After installing the python package you need to connect to a database. For
testing purposes you can use sqlite. However, sqlite does not allow row
locking so if you use parallel workers a task may get assigned to the multiple
workers.

You can set the environment variable DATABASE_URL to configure the data base
connection. For example
```
export DATABASE_URL=sqlite:///app.db
```
or
```
export DATABASE_URL=postgresql://user:pw@host/db
```

You then need to create the tables by running
```
adminTF --init-db
```
You can then create some users
```
adminTF -u some_user -p some_password
```
These users are used by the worker to connect to the service.

![test package taskfarm](https://github.com/mhagdorn/taskfarm/workflows/test%20package%20taskfarm/badge.svg) [![Documentation Status](https://readthedocs.org/projects/taskfarm/badge/?version=latest)](https://taskfarm.readthedocs.io/en/latest/?badge=latest)



