mirror of
https://github.com/ansible/awx.git
synced 2026-02-04 11:08:13 -03:30
this commit implements the bulk of `awx-manage run_dispatcher`, a new command that binds to RabbitMQ via kombu and balances messages across a pool of workers that are similar to celeryd workers in spirit. Specifically, this includes: - a new decorator, `awx.main.dispatch.task`, which can be used to decorate functions or classes so that they can be designated as "Tasks" - support for fanout/broadcast tasks (at this point in time, only `conf.Setting` memcached flushes use this functionality) - support for job reaping - support for success/failure hooks for job runs (i.e., `handle_work_success` and `handle_work_error`) - support for auto scaling worker pool that scale processes up and down on demand - minimal support for RPC, such as status checks and pool recycle/reload
26 lines
415 B
Python
26 lines
415 B
Python
|
|
# Python
|
|
import logging
|
|
|
|
# AWX
|
|
from awx.main.scheduler import TaskManager
|
|
from awx.main.dispatch.publish import task
|
|
|
|
logger = logging.getLogger('awx.main.scheduler')
|
|
|
|
|
|
@task()
|
|
def run_job_launch(job_id):
|
|
TaskManager().schedule()
|
|
|
|
|
|
@task()
|
|
def run_job_complete(job_id):
|
|
TaskManager().schedule()
|
|
|
|
|
|
@task()
|
|
def run_task_manager():
|
|
logger.debug("Running Tower task manager.")
|
|
TaskManager().schedule()
|