# ewoksjob
Utilities for job scheduling of [ewoks](https://ewoks.readthedocs.io/) workflows.
Ewoksjob provides an ewoks interface for asynchronous and distributed scheduling of [ewoks](https://ewoks.readthedocs.io/) from python.
Note that *ewoksjob* distributes the execution of workflows while [ewoksdask](https://ewoks.readthedocs.io/)
distributes the execution of tasks in a workflow. So in the context of workflows, job scheduling exists on two levels.
The primary clients that need to schedule workflows are
* [Ewoksserver](https://gitlab.esrf.fr/workflow/ewoks/ewoksserver): web backend for ewoks.
* [Bliss](https://gitlab.esrf.fr/bliss/bliss): the ESRF beamline control system.
* [Daiquiri](https://gitlab.esrf.fr/ui/daiquiri): web backend for Bliss.
## Installation
Install on the client side
```bash
pip install ewoksjob
```
Install on the worker side
```bash
pip install ewoksjob[worker]
```
## Getting started
Start a worker pool that can execute ewoks graphs
```bash
ewoksjob worker
```
Start a workflow on the client side
```python
from ewoksjob.client import submit
workflow = {"graph": {"id": "mygraph"}}
future = submit(args=(workflow,))
result = future.get()
```
Note that both environments need to be able to import `celeryconfig` which
contains celery configuration (mainly the message broker and result backend URL's).
## Hello world example
Clone the git repository and start a worker pool
```bash
scripts/worker.sh --sql
```
Submit workflows
```bash
scripts/runjobs.sh --sql
```
## Tests
```bash
pytest --pyargs ewoksjob
```
To run the redis tests you need `redis-server` (e.g. `conda install redis-server`).
## Documentation
https://ewoksjob.readthedocs.io/
Raw data
{
"_id": null,
"home_page": "https://gitlab.esrf.fr/workflow/ewoks/ewoksjob/",
"name": "ewoksjob",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "",
"keywords": "",
"author": "ESRF",
"author_email": "wout.de_nolf@esrf.fr",
"download_url": "https://files.pythonhosted.org/packages/95/cd/75d8d0363ee262d86f00f72ba28b4cb272830f5c56e1b8eab7e8ed9f237e/ewoksjob-0.3.0.tar.gz",
"platform": null,
"description": "# ewoksjob\n\nUtilities for job scheduling of [ewoks](https://ewoks.readthedocs.io/) workflows.\n\nEwoksjob provides an ewoks interface for asynchronous and distributed scheduling of [ewoks](https://ewoks.readthedocs.io/) from python.\n\nNote that *ewoksjob* distributes the execution of workflows while [ewoksdask](https://ewoks.readthedocs.io/)\ndistributes the execution of tasks in a workflow. So in the context of workflows, job scheduling exists on two levels.\n\nThe primary clients that need to schedule workflows are\n* [Ewoksserver](https://gitlab.esrf.fr/workflow/ewoks/ewoksserver): web backend for ewoks.\n* [Bliss](https://gitlab.esrf.fr/bliss/bliss): the ESRF beamline control system.\n* [Daiquiri](https://gitlab.esrf.fr/ui/daiquiri): web backend for Bliss.\n\n## Installation\n\nInstall on the client side\n\n```bash\npip install ewoksjob\n```\n\nInstall on the worker side\n\n```bash\npip install ewoksjob[worker]\n```\n\n## Getting started\n\nStart a worker pool that can execute ewoks graphs\n\n```bash\newoksjob worker\n```\n\nStart a workflow on the client side\n\n```python\nfrom ewoksjob.client import submit\n\nworkflow = {\"graph\": {\"id\": \"mygraph\"}}\nfuture = submit(args=(workflow,))\nresult = future.get()\n```\n\nNote that both environments need to be able to import `celeryconfig` which\ncontains celery configuration (mainly the message broker and result backend URL's).\n\n## Hello world example\n\nClone the git repository and start a worker pool\n\n```bash\nscripts/worker.sh --sql\n```\n\nSubmit workflows\n\n```bash\nscripts/runjobs.sh --sql\n```\n\n## Tests\n\n```bash\npytest --pyargs ewoksjob\n```\n\nTo run the redis tests you need `redis-server` (e.g. `conda install redis-server`).\n\n## Documentation\n\nhttps://ewoksjob.readthedocs.io/\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Asynchronous and distributed scheduling of Ewoks workflows from python",
"version": "0.3.0",
"project_urls": {
"Documentation": "https://ewoksjob.readthedocs.io/",
"Homepage": "https://gitlab.esrf.fr/workflow/ewoks/ewoksjob/",
"Source": "https://gitlab.esrf.fr/workflow/ewoks/ewoksjob/",
"Tracker": "https://gitlab.esrf.fr/workflow/ewoks/ewoksjob/issues/"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "95cd75d8d0363ee262d86f00f72ba28b4cb272830f5c56e1b8eab7e8ed9f237e",
"md5": "f921db986506829bf693f290204b755e",
"sha256": "8587fdf4e581aba579ade3a3a6eaf3bae95d58307125e55fe3fe092c7a93dd40"
},
"downloads": -1,
"filename": "ewoksjob-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "f921db986506829bf693f290204b755e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 22271,
"upload_time": "2024-01-30T13:27:17",
"upload_time_iso_8601": "2024-01-30T13:27:17.513574Z",
"url": "https://files.pythonhosted.org/packages/95/cd/75d8d0363ee262d86f00f72ba28b4cb272830f5c56e1b8eab7e8ed9f237e/ewoksjob-0.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-01-30 13:27:17",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "ewoksjob"
}