Skip to content

Using gipc.start_process in gevent StreamServer socket listener is closed? #136

@mattbillenstein

Description

@mattbillenstein

Not sure I'm understanding this fully, but if I try to use gipc within Streamserver's handle method, it seems like the StreamServer's listening socket is being closed...

$ ./test.py handle <gevent._socket3.socket at 0x7cc3056bb700 object, fd=6, family=2, type=1, proto=0> ('127.0.0.1', 13656) Traceback (most recent call last): File "/home/mattb/src/mattb/salty/./test.py", line 47, in <module> Serv(('127.0.0.1', 12345)).serve_forever() File "/home/mattb/src/mattb/salty/.venv/lib/python3.10/site-packages/gevent/baseserver.py", line 400, in serve_forever self._stop_event.wait() File "src/gevent/event.py", line 164, in gevent._gevent_cevent.Event.wait File "src/gevent/_abstract_linkable.py", line 521, in gevent._gevent_c_abstract_linkable.AbstractLinkable._wait File "src/gevent/_abstract_linkable.py", line 487, in gevent._gevent_c_abstract_linkable.AbstractLinkable._wait_core File "src/gevent/_abstract_linkable.py", line 490, in gevent._gevent_c_abstract_linkable.AbstractLinkable._wait_core File "src/gevent/_abstract_linkable.py", line 442, in gevent._gevent_c_abstract_linkable.AbstractLinkable._AbstractLinkable__wait_to_be_notified File "src/gevent/_abstract_linkable.py", line 451, in gevent._gevent_c_abstract_linkable.AbstractLinkable._switch_to_hub File "src/gevent/_greenlet_primitives.py", line 61, in gevent._gevent_c_greenlet_primitives.SwitchOutGreenletWithLoop.switch File "src/gevent/_greenlet_primitives.py", line 65, in gevent._gevent_c_greenlet_primitives.SwitchOutGreenletWithLoop.switch File "src/gevent/_gevent_c_greenlet_primitives.pxd", line 35, in gevent._gevent_c_greenlet_primitives._greenlet_switch gevent.exceptions.LoopExit: This operation would block forever Hub: <Hub '' at 0x7cc3056f5a80 epoll default pending=0 ref=0 fileno=3 thread_ident=0x7cc306ba7000> Handles: []

See attached test.py - if I use gvent.spawn instead of gipc.start_process (add --spawn when running test.py), I get some data set back and forth as expected.

Am I doing something incorrectly here or is this a bug?

test.py.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions