{
"info": {
"author": "Orne Brocaar",
"author_email": "datawarehouse@spilgames.com",
"bugtrack_url": null,
"classifiers": [],
"description": "Job-Runner Worker\n=================\n\nThis package contains the Job-Runner Worker, which is responsible for executing\nthe scheduled jobs managed by the Job-Runner.\n\nLinks\n-----\n\n* `documentation `_\n* `source `_\n\n\nInstallation\n------------\n\nRequirements (depending on your distro, the naming might be a bit different):\n\n* ``python-dev``\n* ``build-essential``\n* ``libevent-dev``\n\nThen you should be able to install this package with\n``pip install job-runner-worker``.\n\nIf you want to install this package in development mode, clone this repository\nand then execute ``python setup.py develop``. In the latter, you might want\nto install the testing requirements by executing\n``pip install -r test-requirements.txt``.\n\nSee the getting started section in the Job-Runner documentation (\nin the *job-runner* repo) for setting up the whole project.\n\n\nConfiguration\n-------------\n\nExample with required settings::\n\n [job_runner_worker]\n api_base_url=http://domain.of.job.runner/\n api_key=worker1\n secret=verysecret\n script_temp_path=/tmp\n ws_server_hostname=domain.of.websocket.server\n broadcaster_server_hostname=domain.of.broadcast.server\n\n\nAll available settings\n~~~~~~~~~~~~~~~~~~~~~~\n\n``api_base_url``\n The base URL which will be used to access the API. This should start with\n ``http://`` or ``https://``.\n\n``api_key``\n Public-key to access the API.\n\n``secret``\n Private-key to access the API.\n\n``concurrent_jobs``\n The number of jobs to run concurrently. Default: ``4``.\n\n``log_level``\n The log level. Default: ``'info'``. Valid options are:\n\n * ``debug``\n * ``info``\n * ``warning``\n * ``error``\n\n``max_log_bytes``\n The maximum number of bytes of the log that is sent back to the API. This\n is to avoid ``413 Request Entity Too Large`` errors. If the log will be\n larger than this value, 20% of the allowed size will be taken from the top\n of the log, the remaining 80% will be taken from the bottom. Everything\n in between will be truncated. Default: ``819200`` (800kb).\n\n``ws_server_hostname``\n The hostname of the WebSocket Server.\n\n``ws_server_port``\n The port of the WebSocket Server. Default: ``5555``.\n\n``script_temp_path``\n The path where the scripts that are being executed through the Job-Runner\n are temporarily stored. Default: ``'/tmp'``.\n\n``broadcaster_server_hostname``\n The hostname of the queue broadcaster server.\n\n``broadcaster_server_port``\n The port of the queue broadcaster server. Default: ``5556``.\n\n``reconnect_after_inactivity``\n Seconds after which the subscriber is re-connecting to the publisher\n when no data has been received. Default: ``300``. This is useful when you\n are loadbalancing the publisher and it keeps the TCP connection open on the\n front-end, when the connection on the back-end has been closed. Because of\n this ZMQ doesn't detect that it is not connected anymore and jobs get\n stuck.\n\n\nCommand-line usage\n------------------\n\nFor starting the worker, you can use the ``job_runner_worker`` command::\n\n usage: job_runner_worker [-h] [--config-path CONFIG_PATH]\n\n Job Runner worker (v2.1.0)\n\n optional arguments:\n -h, --help show this help message and exit\n --config-path CONFIG_PATH\n absolute path to config file (default: CONFIG_PATH env\n variable)\n\n\nChanges\n-------\n\nv2.1.2\n~~~~~~\n\n* Rollback retry on 4xx errors. Instead, recover when an unexpected error\n occurs in the ``execute_run``, ``enqueue_actions``, or ``kill_run``. This\n will recover from when a run was claimed by two workers (e.g. in the case\n when it was sent to worker a, which doesn't respond directly, then it was\n sent to worker b which claims it after which a claims it too).\n\n\nv2.1.1\n~~~~~~\n\n* Make sure a shebang does exist on scripts to be run. Use shlex to make\n Popen safer.\n* Retry request 5x when the response is in the 4xx range before raising an\n exception.\n\n\nv2.1.0\n~~~~~~\n\n* On ping response, send back the version of the worker and the number of\n concurrent jobs. This version requires that you have ``job-runner>=3.4.0``\n running.\n\n\nv2.0.3\n~~~~~~\n\n* Update error message when job does not start to be more verbose and specific.\n\n\nv2.0.2\n~~~~~~\n\n* Fix the case where in case of an exception, the run was marked as completed\n but not started.\n\n\nv2.0.1\n~~~~~~\n\n* Make sure to only cleanup runs that are assigned to the worker. This version\n is dependent on ``job-runner>=3.0.1``.\n\n\nv2.0.0\n~~~~~~\n\n* Make the worker compatible with the new worker-pool structure.\n **IMPORTANT:** This version is dependent on ``job-runner>=2.0.0``!\n* Change ``SETTINGS_PATH`` environment variable to ``CONFIG_PATH`` for better\n naming consistency.\n* Make sure that when a run already has log, it is updated (before it would\n hang on the database integrity error).\n\n\nv1.2.1\n~~~~~~\n\n* Make the worker crash early instead of hanging on errors happening before the\n actual job starts, to give the user a visible cue that something went wrong.\n\n\nv1.2.0\n~~~~~~\n\n* The worker will now terminate gracefully when receiving the ``TERM`` signal.\n This means that all pending jobs will be completed, but that it will not\n accept any new jobs. After finishing the last pending job, the worker will\n terminate.\n\n\nv1.1.4\n~~~~~~\n\n* Set ``reconnect_after_inactivity`` default to 10 minutes. This is 2 x the\n ``JOB_RUNNER_WORKER_PING_INTERVAL`` default setting in Job-Runner.\n\n\nv1.1.3\n~~~~~~\n\n* Implement handler for ``ping`` action.\n\n\nv1.1.2\n~~~~~~\n\n* Add and implement ``reconnect_after_inactivity`` setting.\n\n\nv1.1.1\n~~~~~~\n\n* Run script by finding their shebang without the x bit being needed.\n\n\nv1.1.0\n~~~~~~\n\n* Handle separate run log-output resource. This requires Job-Runner >= v1.3.0.\n\n\nv1.0.7\n~~~~~~\n\n* Fix killing job-runs. Where *v1.0.5* was killing children processes, it did\n not kill children of children, ... This should kill the full tree of\n child-processes.\n\n\nv1.0.6\n~~~~~~\n\n* Freeze requests library version, since 1.0.0 contains backwards compatible\n changes.\n\n\nv1.0.5\n~~~~~~\n\n* Fix killing job-runs. When the process had sub-processes, only the parent\n process was killed and the worker was waiting for the child-processes to\n complete.\n\n\nv1.0.4\n~~~~~~\n\n* Add config variable ``max_log_bytes`` to limit the amount of logdata that\n will be send back to the API (to avoid ``413 Request Entity Too Large``\n errors).\n\n\nv1.0.3\n~~~~~~\n\n* Send ``pid`` back to the REST API when a job has been started.\n* Kill a job-run when a ``kill`` action is received.\n\n\nv1.0.2\n~~~~~~\n\n* Make sure that the API exactly matches.\n\n\nv1.0.1\n~~~~~~\n\n* Make the timezones send to the REST API timezone aware.\n\n\nv1.0.0\n~~~~~~\n\n* Deployar related changes.\n\n\nv0.7.1\n~~~~~~\n\n* Fix encoding issue when writing the file.\n\n\nv0.7.0\n~~~~~~\n\n* Refactor to make the worker compatible with the 0.7 version of the\n ``job-runner`` package.\n* Make it consume runs from the queue broadcaster instead of hitting the REST\n interface every x seconds.\n* Add retry on error to recover from temporary REST interface errors.\n\n\nv0.6.1\n~~~~~~\n\n* Merge fixes v0.5.1 and v0.5.2 into v0.6.x version.\n\n\nv0.6.0\n~~~~~~\n\n* Refactor to make use of separate WebSocket Server.\n\n\nv0.5.2\n~~~~~~\n\n* Make temporary path for scripts configurable.\n\n\nv0.5.1\n~~~~~~\n\n* Disable SSL certificate validation.\n\n\nv0.5.0\n~~~~~~\n\n* Initial release.",
"description_content_type": null,
"docs_url": null,
"download_url": "UNKNOWN",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/spilgames/job-runner-worker/",
"keywords": null,
"license": "BSD",
"maintainer": null,
"maintainer_email": null,
"name": "job-runner-worker",
"package_url": "https://pypi.org/project/job-runner-worker/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/job-runner-worker/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "https://github.com/spilgames/job-runner-worker/"
},
"release_url": "https://pypi.org/project/job-runner-worker/2.1.2/",
"requires_dist": null,
"requires_python": null,
"summary": "Job-Runner Worker",
"version": "2.1.2"
},
"last_serial": 808899,
"releases": {
"1.2.0": [
{
"comment_text": "",
"digests": {
"md5": "0a37be7f2348522c0524e24e7f3feacb",
"sha256": "a10db58aed29c0f71fa30d765b5c4866173334776c80ae93d5e496dc9e8e4104"
},
"downloads": -1,
"filename": "job-runner-worker-1.2.0.tar.gz",
"has_sig": false,
"md5_digest": "0a37be7f2348522c0524e24e7f3feacb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10002,
"upload_time": "2013-03-07T12:38:54",
"url": "https://files.pythonhosted.org/packages/a8/a2/8d3f002c6a1c65b7f7948c8f17c7a522ef6268c750cb62252b5196d08080/job-runner-worker-1.2.0.tar.gz"
}
],
"1.2.1": [
{
"comment_text": "",
"digests": {
"md5": "8584ab7e11581ec27b1ff27740ac4793",
"sha256": "998bd639a514fcddb3ee906dc835ef39ae150fc0cc6258d2c3f8e2ed4563cc8c"
},
"downloads": -1,
"filename": "job-runner-worker-1.2.1.tar.gz",
"has_sig": false,
"md5_digest": "8584ab7e11581ec27b1ff27740ac4793",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10303,
"upload_time": "2013-03-15T15:23:48",
"url": "https://files.pythonhosted.org/packages/7e/59/901010752e565f7201ff57332487f2441a6746f1d3907da880b1ef394f42/job-runner-worker-1.2.1.tar.gz"
}
],
"2.0.0": [
{
"comment_text": "",
"digests": {
"md5": "d6292f17e266853a5ff61f267d5adcc5",
"sha256": "255d41cae8b10bd98abbaf96f895ad0e49d66a72acf002521bec7b6e570b47ad"
},
"downloads": -1,
"filename": "job-runner-worker-2.0.0.tar.gz",
"has_sig": false,
"md5_digest": "d6292f17e266853a5ff61f267d5adcc5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10827,
"upload_time": "2013-03-25T09:24:36",
"url": "https://files.pythonhosted.org/packages/35/60/b8e41d505563f740c7a531cf248b6035c7783d56b930cbd621a68f77ef2b/job-runner-worker-2.0.0.tar.gz"
}
],
"2.0.1": [
{
"comment_text": "",
"digests": {
"md5": "91d5a94414435738bb6c685a55f85194",
"sha256": "f3df278edda3bc7cc29640bb6921325f4e052549576f0bdfa5526445e386c73f"
},
"downloads": -1,
"filename": "job-runner-worker-2.0.1.tar.gz",
"has_sig": false,
"md5_digest": "91d5a94414435738bb6c685a55f85194",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10893,
"upload_time": "2013-04-15T07:00:02",
"url": "https://files.pythonhosted.org/packages/0b/d8/0a7b1d87320a54d8048b0b5b5a7fe9fad68f3f1a1d4ce8f3ac58f098448e/job-runner-worker-2.0.1.tar.gz"
}
],
"2.0.2": [
{
"comment_text": "",
"digests": {
"md5": "4df9d22eed72a39752bf73b3905ca88b",
"sha256": "a3304488f3377e49c67f3c86ae2b02936ef64c98a553df92b93d7558326f3af1"
},
"downloads": -1,
"filename": "job-runner-worker-2.0.2.tar.gz",
"has_sig": false,
"md5_digest": "4df9d22eed72a39752bf73b3905ca88b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10946,
"upload_time": "2013-04-24T09:50:31",
"url": "https://files.pythonhosted.org/packages/ad/27/3343070c889baad23ffb56749b0777a161915959fd8e889872f9c4a6b80f/job-runner-worker-2.0.2.tar.gz"
}
],
"2.1.0": [
{
"comment_text": "",
"digests": {
"md5": "f20b5c518f16405ed0abd8999854d619",
"sha256": "7d1cc1f09fb8f9ea487dfdf96d62b7dd8f03e4bc3e11e6f94f85693c2e3df7f5"
},
"downloads": -1,
"filename": "job-runner-worker-2.1.0.tar.gz",
"has_sig": false,
"md5_digest": "f20b5c518f16405ed0abd8999854d619",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 11135,
"upload_time": "2013-06-24T12:51:36",
"url": "https://files.pythonhosted.org/packages/bd/0f/6611a880e6e0225fb9d484820439fc246b75c18159d914d6af060bf09a4f/job-runner-worker-2.1.0.tar.gz"
}
],
"2.1.1": [
{
"comment_text": "",
"digests": {
"md5": "dc9551db1d52e38d46a8a98a42c06444",
"sha256": "a9c266123021e8d920ff90493412a4f15200901f4e4fbed6d22ade37331f6675"
},
"downloads": -1,
"filename": "job-runner-worker-2.1.1.tar.gz",
"has_sig": false,
"md5_digest": "dc9551db1d52e38d46a8a98a42c06444",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 11423,
"upload_time": "2013-06-27T14:28:08",
"url": "https://files.pythonhosted.org/packages/a6/43/3246e4ce71ef96e1ca941d39a1d150194a4542606e35380e192a712f18d1/job-runner-worker-2.1.1.tar.gz"
}
],
"2.1.2": [
{
"comment_text": "",
"digests": {
"md5": "c1213ffe307777b536bd6c9107aa5a48",
"sha256": "bde3bfe1373e0bfcbbc8db2cc3a74c9dd085a26f6e09fc631b601b2b4c0342ea"
},
"downloads": -1,
"filename": "job-runner-worker-2.1.2.tar.gz",
"has_sig": false,
"md5_digest": "c1213ffe307777b536bd6c9107aa5a48",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 11760,
"upload_time": "2013-07-05T12:54:29",
"url": "https://files.pythonhosted.org/packages/6b/a6/2a449edfc9156bd7539c4a641a79d729b04ff50a105aee157c21022d5cd6/job-runner-worker-2.1.2.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "c1213ffe307777b536bd6c9107aa5a48",
"sha256": "bde3bfe1373e0bfcbbc8db2cc3a74c9dd085a26f6e09fc631b601b2b4c0342ea"
},
"downloads": -1,
"filename": "job-runner-worker-2.1.2.tar.gz",
"has_sig": false,
"md5_digest": "c1213ffe307777b536bd6c9107aa5a48",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 11760,
"upload_time": "2013-07-05T12:54:29",
"url": "https://files.pythonhosted.org/packages/6b/a6/2a449edfc9156bd7539c4a641a79d729b04ff50a105aee157c21022d5cd6/job-runner-worker-2.1.2.tar.gz"
}
]
}