| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
https://github.com/eventlet/eventlet/issues/177
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
https://github.com/eventlet/eventlet/issues/94
We have to defang the listener after removing it from the hub
Otherwise we never actaully remove it from the hub and get a return of the
second simultanous read.
This should fix this issue.
Turn off __builtin__ monkey patching by default
The reason is that eventlet.greenio.GreenPipe tries to
adapt an original file f, and performs the following check
isinstance(f, file) f is an original file object with file
is now our file method. This fails causing TypeError
nova-api exercises this
Fix up zmq to use the extended add signature
Having heard no problems relating eventlet and zmq,
I'm not going to dive in and drop random pataches against
it. If the 'Second simultaneous *er' crops up against
zmw then we at least now have the machinery to
address it.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
https://github.com/eventlet/eventlet/issues/94
Because of the way paramiko utilises a client thread to manage its
communication, it's not been compatible with eventlet when run in
parallel.
It's not the only place these problems would arise.
This stemmed from the reuse of a fileno by the underlying OS.
Because listeners are registered against this descriptor, it would
be possible for old listeners to receive events destined for newer
descriptors; occasionally code would attempt to utilise the new
descriptor from a different greenlet, giving rise to the 'second
simultaneous read' problem.
Whenever a Python object is created to wrap one of these filenos,
we now signal the hub in order that it can correctly obsolete
extant listeners against that fileno. This is a fairly tricky
operation, due to the way that listeners' threads are interleaved
with the hub's operation - there are a number of small fixes here
to defend against one listener from effectively obsoleting another
when an event is pending against it.
|
| |
|
|
|
|
| |
Closes GH-102
Closes GH-103
Closes GH-104
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
- __next__ for iterator interface
- six.next() to get next item
- list(dict.keys())
- popen2.popen4 -> subprocess
- s2b -> b"..." literals
- deprecated assertEquals -> assertEqual
- hub_test test_fork using run_python
- 1L -> 1 long literal
- many PEP-8 fixes
|
| | |
|
| | |
|
| |
|
|
|
|
| |
https://github.com/eventlet/eventlet/pull/82
Celery could work with eventlet in Python3 now
|
| |
|
|
| |
https://github.com/eventlet/eventlet/pull/59
|
| |
|
|
|
|
|
| |
First step to Python 3 compatibility
"2to3 -w -f except ." See [1]
[1] http://docs.python.org/2/library/2to3.html#fixers
|
| |
|
|
|
| |
Fixes https://github.com/eventlet/eventlet/issues/38
+autopep8
|
| |
|
|
|
|
|
|
| |
* try and recover from bad file descriptor error after fork
* remove some stuff in kqueue hub that was added by accident
* skip test_closure test with kqueue hub
kqueue hub cannot detect closures of file descriptors
* simplify _reinit_kqueue()
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
also, ensure this happens when eventlet.greenthread.kill() is used.
|
| | |
|
| |
|
|
| |
Fixes issue #123
|
| | |
|
| | |
|
| |
|
|
| |
thanks to Edward George for the repro and fix.
|
| | |
|
| |\ |
|
| | |
| |
| |
| | |
cracked that nut yet.
|
| | | |
|
| |/ |
|
| | |
|
| |\ |
|
| | |
| |
| |
| | |
greenlet.
|
| | |
| |
| |
| | |
intermittently fail. Spelling fail! <insert rant about how a strongly-typed language would have caught this bug>
|
| | | |
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A new hub: This closely mirrors the poll hub with some of the internal logic changed to reflect zmq's flags.
A green module for zmq: This subclasses Context and Socket to ensure calls are non blocking.
A (very sparse) beginings of a test module.
An example: A melding of the pyzmq chat example and the eventlet telnet chat example.
TODO
zmq_poll chokes if the sockets passed to it come from different contexts. As context is the entry point to everything else then it would make sense to include a check in here that each thread has only one context instance. By context being the entry point I mean:
ctx = zmq.Context()
socket = ctx.socket(zmq.<type-of-socket>)
This call to socket is repeated for each socket you want and ctx must be the same one for each thread.
Tests. I'd like to get to the point f having all zmq socket pairs tested - and perhaps a nice benchmark suite too.
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
detection
The itimer module can be found here: http://github.com/slideinc/itimer
for versions of Python prior to 2.6
|
| |
|
|
|
|
| |
hub by default if Twisted has been imported.
If you want to use the Twisted hub you'll have to explicitly enable it via the EVENTLET_HUB environment variable or use_hub('twistedr') in code.
|
| |\ |
|
| | | |
|
| |/
|
|
|
|
| |
This will allow for subsecond blocking detection thanks to the itimer
module recently released by Slide, Inc:
http://github.com/slideinc/itimer
|
| |\ |
|
| | | |
|
| |/ |
|
| | |
|