diff --git a/awx/main/scheduler/__init__.py b/awx/main/scheduler/__init__.py index 5f309ce0bc..194e4b0964 100644 --- a/awx/main/scheduler/__init__.py +++ b/awx/main/scheduler/__init__.py @@ -16,6 +16,7 @@ from django.utils.timezone import now as tz_now from awx.main.models import * # noqa #from awx.main.scheduler.dag_simple import SimpleDAG from awx.main.scheduler.dag_workflow import WorkflowDAG +from awx.main.utils.pglock import advisory_lock from awx.main.scheduler.dependency_graph import DependencyGraph from awx.main.tasks import _send_notification_templates @@ -23,7 +24,6 @@ from awx.main.tasks import _send_notification_templates # Celery from celery.task.control import inspect -from django_pglocks import advisory_lock logger = logging.getLogger('awx.main.scheduler') diff --git a/awx/main/scheduler/tasks.py b/awx/main/scheduler/tasks.py index d2200d8912..5ad5bff76a 100644 --- a/awx/main/scheduler/tasks.py +++ b/awx/main/scheduler/tasks.py @@ -6,6 +6,7 @@ import json # Django from django.db import transaction from django.utils.timezone import now as tz_now +from awx.main.utils.pglock import advisory_lock # Celery from celery import task @@ -14,7 +15,6 @@ from celery import task from awx.main.scheduler import TaskManager from django.core.cache import cache -from django_pglocks import advisory_lock logger = logging.getLogger('awx.main.scheduler') diff --git a/awx/main/utils/pglock.py b/awx/main/utils/pglock.py new file mode 100644 index 0000000000..7de7739fc3 --- /dev/null +++ b/awx/main/utils/pglock.py @@ -0,0 +1,15 @@ +# Copyright (c) 2017 Ansible by Red Hat +# All Rights Reserved. + +from contextlib import contextmanager + +from django_pglocks import advisory_lock as django_pglocks_advisory_lock +from django.db import connection + +@contextmanager +def advisory_lock(*args, **kwargs): + if connection.vendor == 'postgresql': + with django_pglocks_advisory_lock(*args, **kwargs) as internal_lock: + yield internal_lock + else: + yield True