diff options
| author | Ryan Williams <rdw@lindenlab.com> | 2010-02-20 14:44:09 -0500 |
|---|---|---|
| committer | Ryan Williams <rdw@lindenlab.com> | 2010-02-20 14:44:09 -0500 |
| commit | 91015ddf9d94012113420e3f1ab065f0302b9948 (patch) | |
| tree | 714f25e4f39d91f87852915fddf73aeb73bd174e /eventlet/greenthread.py | |
| parent | 46234611411f75294acce37e8f3a56b409786c40 (diff) | |
| download | eventlet-91015ddf9d94012113420e3f1ab065f0302b9948.tar.gz | |
Doc upgrade for greenthread module.
Diffstat (limited to 'eventlet/greenthread.py')
| -rw-r--r-- | eventlet/greenthread.py | 56 |
1 files changed, 10 insertions, 46 deletions
diff --git a/eventlet/greenthread.py b/eventlet/greenthread.py index 6027002..7bcaf93 100644 --- a/eventlet/greenthread.py +++ b/eventlet/greenthread.py @@ -7,7 +7,7 @@ from eventlet.hubs import timer from eventlet.support import greenlets as greenlet import warnings -__all__ = ['getcurrent', 'sleep', 'spawn', 'spawn_n', 'call_after_global', 'call_after_local', 'GreenThread'] +__all__ = ['getcurrent', 'sleep', 'spawn', 'spawn_n', 'spawn_after', 'spawn_after_local', 'GreenThread'] getcurrent = greenlet.getcurrent @@ -16,7 +16,7 @@ def sleep(seconds=0): elapsed. *seconds* may be specified as an integer, or a float if fractional seconds - are desired. Calling :func:`~eventlet.api.sleep` with *seconds* of 0 is the + are desired. Calling :func:`~greenthread.sleep` with *seconds* of 0 is the canonical way of expressing a cooperative yield. For example, if one is looping over a large list performing an expensive calculation without calling any socket methods, it's a good idea to call ``sleep(0)`` @@ -73,9 +73,9 @@ def spawn_after(seconds, func, *args, **kwargs): To cancel the spawn and prevent *func* from being called, call :meth:`GreenThread.cancel` on the return value of :func:`spawn_after`. - This will not abort the function if it's already started running. If - terminating *func* regardless of whether it's started or not is the desired - behavior, call :meth:`GreenThread.kill`. + This will not abort the function if it's already started running, which is + generally the desired behavior. If terminating *func* regardless of whether + it's started or not is the desired behavior, call :meth:`GreenThread.kill`. """ hub = hubs.get_hub() g = GreenThread(hub.greenlet) @@ -107,14 +107,6 @@ def spawn_after_local(seconds, func, *args, **kwargs): def call_after_global(seconds, func, *args, **kwargs): - """Schedule *function* to be called after *seconds* have elapsed. - The function will be scheduled even if the current greenlet has exited. - - *seconds* may be specified as an integer, or a float if fractional seconds - are desired. The *function* will be called with the given *args* and - keyword arguments *kwargs*, and will be executed within its own greenthread. - - Its return value is discarded.""" warnings.warn("call_after_global is renamed to spawn_after, which" "has the same signature and semantics (plus a bit extra). Please do a" " quick search-and-replace on your codebase, thanks!", @@ -123,15 +115,6 @@ def call_after_global(seconds, func, *args, **kwargs): def call_after_local(seconds, function, *args, **kwargs): - """Schedule *function* to be called after *seconds* have elapsed. - The function will NOT be called if the current greenthread has exited. - - *seconds* may be specified as an integer, or a float if fractional seconds - are desired. The *function* will be called with the given *args* and - keyword arguments *kwargs*, and will be executed within its own greenthread. - - Its return value is discarded. - """ warnings.warn("call_after_local is renamed to spawn_after_local, which" "has the same signature and semantics (plus a bit extra).", DeprecationWarning, stacklevel=2) @@ -145,30 +128,6 @@ call_after = call_after_local def exc_after(seconds, *throw_args): - """Schedule an exception to be raised into the current coroutine - after *seconds* have elapsed. - - This only works if the current coroutine is yielding, and is generally - used to set timeouts after which a network operation or series of - operations will be canceled. - - Returns a :class:`~eventlet.timer.Timer` object with a - :meth:`~eventlet.timer.Timer.cancel` method which should be used to - prevent the exception if the operation completes successfully. - - See also :func:`~eventlet.api.with_timeout` that encapsulates the idiom below. - - Example:: - - def read_with_timeout(): - timer = api.exc_after(30, RuntimeError()) - try: - httpc.get('http://www.google.com/') - except RuntimeError: - print "Timed out!" - else: - timer.cancel() - """ warnings.warn("Instead of exc_after, which is deprecated, use " "Timeout(seconds, exception)", DeprecationWarning, stacklevel=2) @@ -270,9 +229,14 @@ def cancel(g, *throw_args): def kill(g, *throw_args): """Terminates the target greenthread by raising an exception into it. + Whatever that greenthread might be doing; be it waiting for I/O or another + primitive, it sees an exception right away. + By default, this exception is GreenletExit, but a specific exception may be specified. *throw_args* should be the same as the arguments to raise; either an exception instance or an exc_info tuple. + + Calling :func:`kill` causes the calling greenthread to cooperatively yield. """ if g.dead: return |
