TypeError: changelist must be an iterable of select.kevent objects on Python 3.9/OSX #670
Comments
|
Hey that seems like a somewhat easy bug in kqueue hub. Please try Python3.7-3.8 if you can. |
|
And of course, |
|
I can't easily run older Python's right now, due to other dependencies unrelated to eventlet. Setting Also just removing So I can run two ways under Python 3.9:
I'm totally new to eventlet. We are writing a Flask-SocketIO server that's updating at 60Hz, but should generally have just 1 connected user! |
|
@pwinston IMHO Python threads are decent solution for under 100 concurrent connections. Maybe you don't need Eventlet after all. Still there is a bug in kqueue hub. Could you provide a minimal issue reproduction script? |
|
This reproduces the problem:
Yeah we'll probably 1 concurrent connection! Flask-SocketIO does not give the best explanation of the options, or the trade-offs. It says use eventlet, or gevent, or "The Flask development server based on Werkzeug" but it poo-poohs that option. So I don't know if it has a "threads" option, maybe that's the Flask development server? |
|
Thanks a lot. So the bug is indeed Python 3.9 specific, this code works on 3.8. Shorter repro script:
Flask-SocketIO doc says dev server can't talk websocket, only long polling, which is really unfortunate. Before abandoning websocket option, maybe you should check that all different features of your browser-backend interaction work fine and under degraded network too. I know very little about SocketIO to suggest in which situations websocket transport is clearly superior to long polling. |
|
Other kevent platforms like FreeBSD should suffer from this issue, in theory. |
I'm using eventlet 0.29.1 with Flask-SocketIO 4.3.1 and Python 3.9 on MacOS.
I tried added
eventlet.monkey_patch()hoping to cure my server of hanging on exit.My program uses
SharedMemoryManagerto connect to a process, kind of on the other side of things away from the SocketIO part. Andmonkey_patch()causes this error when I callSharedMemoryManager.connect():TypeError: changelist must be an iterable of select.kevent objectsThe text was updated successfully, but these errors were encountered: