summaryrefslogtreecommitdiff
path: root/taskflow/utils
diff options
context:
space:
mode:
authorJoshua Harlow <harlowja@gmail.com>2015-01-11 00:15:09 -0800
committerJoshua Harlow <harlowja@yahoo-inc.com>2015-01-16 11:51:04 -0800
commitd92c226fe2d4a4fc402b96354da29dcc22a25574 (patch)
tree9a3ef9bcb686784dfda8bb1e1fb8c95ef8169b46 /taskflow/utils
parent320955672dafe531533971f4a77fcdae5a7f5a8c (diff)
downloadtaskflow-d92c226fe2d4a4fc402b96354da29dcc22a25574.tar.gz
Add back a 'eventlet_utils' helper utility module
Recreate a very simple eventlet utility module that has only a few features; one function checks if eventlet is available and if not raise an exception; and a constant that can be used by calling code (such as tests or other optional functionality) to check if eventlet is useable before proceeding. Change-Id: I32df0702eeae7c7c78972c9796156dd824b2f123
Diffstat (limited to 'taskflow/utils')
-rw-r--r--taskflow/utils/async_utils.py7
-rw-r--r--taskflow/utils/eventlet_utils.py34
2 files changed, 38 insertions, 3 deletions
diff --git a/taskflow/utils/async_utils.py b/taskflow/utils/async_utils.py
index 2fa3b5f..71eafa1 100644
--- a/taskflow/utils/async_utils.py
+++ b/taskflow/utils/async_utils.py
@@ -19,11 +19,11 @@ from concurrent.futures import _base
try:
from eventlet.green import threading as greenthreading
- EVENTLET_AVAILABLE = True
except ImportError:
- EVENTLET_AVAILABLE = False
+ pass
from taskflow.types import futures
+from taskflow.utils import eventlet_utils as eu
_DONE_STATES = frozenset([
@@ -94,7 +94,8 @@ def _partition_futures(fs):
def _wait_for_any_green(fs, timeout=None):
- assert EVENTLET_AVAILABLE, 'eventlet is needed to wait on green futures'
+ eu.check_for_eventlet(RuntimeError('Eventlet is needed to wait on'
+ ' green futures'))
with _base._AcquireFutures(fs):
done, not_done = _partition_futures(fs)
diff --git a/taskflow/utils/eventlet_utils.py b/taskflow/utils/eventlet_utils.py
new file mode 100644
index 0000000..68dd355
--- /dev/null
+++ b/taskflow/utils/eventlet_utils.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2015 Yahoo! Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+try:
+ import eventlet as _eventlet # noqa
+ EVENTLET_AVAILABLE = True
+except ImportError:
+ EVENTLET_AVAILABLE = False
+
+
+def check_for_eventlet(exc=None):
+ """Check if eventlet is available and if not raise a runtime error.
+
+ :param exc: exception to raise instead of raising a runtime error
+ :type exc: exception
+ """
+ if not EVENTLET_AVAILABLE:
+ if exc is None:
+ raise RuntimeError('Eventlet is not current available')
+ else:
+ raise exc