replace celery task decorators with a kombu-based publisher

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
This commit is contained in:
Ryan Petrello
2018-08-08 13:41:07 -04:00
parent da74f1d01f
commit ff1e8cc356
54 changed files with 1606 additions and 1147 deletions

View File

@@ -9,7 +9,6 @@ daphne==1.3.0 # Last before backwards-incompatible channels 2 upgrade
decorator==4.2.1
Django==1.11.11
django-auth-ldap==1.2.8
django-celery==3.2.2
django-crum==0.7.2
django-extensions==2.0.0
django-jsonfield==1.0.1

View File

@@ -28,7 +28,6 @@ daphne==1.3.0
decorator==4.2.1
defusedxml==0.4.1 # via python-saml
django-auth-ldap==1.2.8
django-celery==3.2.2
django-crum==0.7.2
django-extensions==2.0.0
django-jsonfield==1.0.1

View File

@@ -15,7 +15,6 @@ pytest-mock
pytest-timeout
pytest-xdist
logutils
flower
jupyter
matplotlib
backports.tempfile # support in unit tests for py32+ tempfile.TemporaryDirectory