Issue 25931: os.fork() command distributed in windows Python27 (in SocketServer module) (original) (raw)

process

Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: docs@python Nosy List: Sam Lobel, antvalencia, davin, docs@python, eryksun, gregory.p.smith, martin.panter, paul.moore, python-dev, r.david.murray, steve.dower, supriyanto maftuh, tim.golden, zach.ware
Priority: normal Keywords:

Created on 2015-12-23 03:10 by Sam Lobel, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Messages (12)
msg256896 - (view) Author: Sam Lobel (Sam Lobel) Date: 2015-12-23 03:10
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?
msg256898 - (view) Author: Eryk Sun (eryksun) * (Python triager) Date: 2015-12-23 03:40
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.
msg266845 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2016-06-01 23:44
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.
msg266999 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2016-06-03 00:16
New changeset d772400a1211 by Gregory P. Smith in branch 'default': Issue #25931: Don't defining socketserver.Forking* names on platforms such https://hg.python.org/cpython/rev/d772400a1211
msg267001 - (view) Author: Gregory P. Smith (gregory.p.smith) * (Python committer) Date: 2016-06-03 00:19
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.
msg267005 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2016-06-03 00:23
Your news entry says "don't defining". The doc note can say that the classes are only defined if the platform supports fork.
msg267006 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2016-06-03 00:24
Well, defined for 3.6, and "functional" for 2.7 and 3.5 docs.
msg267029 - (view) Author: Martin Panter (martin.panter) * (Python committer) Date: 2016-06-03 03:03
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 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.
msg267042 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2016-06-03 05:26
New changeset 3145242bc81f by Gregory P. Smith in branch 'default': Issue25931: fix tests broken by the conditional define of socketserver.Forking* https://hg.python.org/cpython/rev/3145242bc81f
msg267045 - (view) Author: Gregory P. Smith (gregory.p.smith) * (Python committer) Date: 2016-06-03 05:37
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.
msg267048 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2016-06-03 05:45
New changeset 015b86646d8e by Gregory P. Smith in branch 'default': : document that socketserver.Forking* are unavailable on platforms https://hg.python.org/cpython/rev/015b86646d8e
msg267049 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2016-06-03 05:48
New changeset a4c0208b10df by Gregory P. Smith in branch '2.7': : document that socketserver.Forking* are unavailable on platforms https://hg.python.org/cpython/rev/a4c0208b10df
History
Date User Action Args
2022-04-11 14:58:25 admin set github: 70119
2016-06-03 20:27:32 berker.peksag set stage: commit review -> resolved
2016-06-03 05:56:57 gregory.p.smith set status: open -> closedresolution: fixedstage: needs patch -> commit review
2016-06-03 05:48:37 python-dev set messages: +
2016-06-03 05:45:08 python-dev set messages: +
2016-06-03 05:37:55 gregory.p.smith set messages: +
2016-06-03 05:26:25 python-dev set messages: +
2016-06-03 03:03:10 martin.panter set nosy: + martin.pantermessages: + versions: + Python 3.6
2016-06-03 00:24:50 r.david.murray set messages: +
2016-06-03 00:23:52 r.david.murray set messages: +
2016-06-03 00:19:11 gregory.p.smith set nosy: + gregory.p.smithmessages: + versions: - Python 3.6
2016-06-03 00:16:15 python-dev set nosy: + python-devmessages: +
2016-06-01 23:44:20 r.david.murray set nosy: + r.david.murray, docs@pythonmessages: + assignee: docs@pythoncomponents: + Documentation, - Library (Lib), Windowsstage: needs patch
2016-04-12 15:44:31 SilentGhost set versions: - Python 3.4
2016-04-12 15:26:02 supriyantomaftuh set nosy: + supriyanto maftuhversions: + Python 3.4
2016-04-12 14:22:50 antvalencia set nosy: + antvalencia
2016-02-12 15:16:07 davin set nosy: + davin
2015-12-23 03:40:36 eryksun set versions: + Python 3.5, Python 3.6nosy: + eryksunmessages: + components: + Library (Lib)
2015-12-23 03:10:31 Sam Lobel create