New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
os.fork() command distributed in windows Python27 (in SocketServer module) #70119
Comments
I ran into this bug while using multiprocessing in Flask, which deep down uses the SocketServer.py module. There's a call to os.fork() in the windows version , which obviously doesn't work. So SocketServer.py can't be used on windows. Maybe replace it with something from the multiprocessing module? |
Starting a Windows process is expensive. Who not use threading, e.g. SocketServer.ThreadingTCPServer? It seems to me that it's a bug to even define ForkingMixIn, ForkingTCPServer, and ForkingUDPServer on Windows. Those should be conditionally defined depending on the existence of os.fork. |
They aren't currently defined conditionally, though, and haven't ever been, so I'm not sure it is worth chaning that. However, we should probably add an 'availability' line, since they aren't (effectively) available on Windows. |
New changeset d772400a1211 by Gregory P. Smith in branch 'default': |
I made the change to not export the Forking names on Windows or other non-os.fork() supporting platforms in 3.6 only as it is arguably an API change, even though the names it removes would effectively be unusable on those platforms anyways. the docs still need updating. |
Your news entry says "don't defining". The doc note can say that the classes are only defined if the platform supports fork. |
Well, defined for 3.6, and "functional" for 2.7 and 3.5 docs. |
This broke test_socketserver: http://buildbot.python.org/all/builders/AMD64%20Windows7%20SP1%203.x/builds/7709/steps/test/logs/stdio
0:08:57 [193/400/1] test_socketserver failed
test test_socketserver crashed -- Traceback (most recent call last):
File "C:\buildbot.python.org\3.x.kloth-win64\build\lib\test\test_socketserver.py", line 371, in <module>
class ForkingErrorTestServer(socketserver.ForkingMixIn, BaseErrorTestServer):
AttributeError: module 'socketserver' has no attribute 'ForkingMixIn' I am with David that it may not be worthwhile churning the API like this. Just document the existing (in 3.5) status that even though the classes exist, they need a working os.fork(). Otherwise, everyone that references ForkingMixIn but doesn’t use it (like test_socketserver) will have to update their code for 3.6. |
New changeset 3145242bc81f by Gregory P. Smith in branch 'default': |
It may be worth rolling back the above two commits. I'm not sure. I'd like to see if anything else falls out of this during the beta phases. There is a chance that some library has code similar to that found in test_socketserver.py that defines classes that inherit from the Forking type(s) but which are conditionally never used on Windows. The above commit would break that. I'm not sure how common that'll be. |
New changeset 015b86646d8e by Gregory P. Smith in branch 'default': |
New changeset a4c0208b10df by Gregory P. Smith in branch '2.7': |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: