diff options
| author | Joshua Harlow <harlowja@gmail.com> | 2015-01-11 00:15:09 -0800 |
|---|---|---|
| committer | Joshua Harlow <harlowja@yahoo-inc.com> | 2015-01-16 11:51:04 -0800 |
| commit | d92c226fe2d4a4fc402b96354da29dcc22a25574 (patch) | |
| tree | 9a3ef9bcb686784dfda8bb1e1fb8c95ef8169b46 /taskflow/utils | |
| parent | 320955672dafe531533971f4a77fcdae5a7f5a8c (diff) | |
| download | taskflow-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.py | 7 | ||||
| -rw-r--r-- | taskflow/utils/eventlet_utils.py | 34 |
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 |
