Message153071
| Author |
neologix |
| Recipients |
jjardon, neologix |
| Date |
2012年02月10日.18:42:52 |
| SpamBayes Score |
2.5162594e-11 |
| Marked as misclassified |
No |
| Message-id |
<1328899373.09.0.69517773885.issue13978@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
"""
OSError: [Errno 16] Device or resource busy: '/nfs/tmp/pymp-f7R9S6/.nfs00000000e039692f00000236'
"""
That's because the temporary directory is removed while a file inside is still open.
And that's really likely the unix socket used by the server's listener.
What happens if you do this instead:
"""
import multiprocessing
manager = multiprocessing.Manager()
manager.shutdown()
del manager
"""
You should shutdown the manager before it gets garbage collected.
> (the TMDIR directory is in a nfs server)
Bad idea, for the following reasons:
- you're actually lucky Linux allows binding unix sockets over NFS filesystems, some Unix flavors don't
- you're likely to run into similar problems, because code which removes a temporary directory while having still an open FD is quite common, and will break with a tmp dir over NFS
- mkstemp() and friends use O_EXCL to create a temporary file securely, and some NFS implementations of O_EXCL are unsafe (should be OK with NFSv3 and later though)
- it's not a good idea performance wise |
|
History
|
|---|
| Date |
User |
Action |
Args |
| 2012年02月10日 18:42:53 | neologix | set | recipients:
+ neologix, jjardon |
| 2012年02月10日 18:42:53 | neologix | set | messageid: <1328899373.09.0.69517773885.issue13978@psf.upfronthosting.co.za> |
| 2012年02月10日 18:42:52 | neologix | link | issue13978 messages |
| 2012年02月10日 18:42:52 | neologix | create |
|