Python中`os.chmod`的asyncio版本

7
我有一些运行在asyncio事件循环中的Python3代码。
我想使用os.chmod(...)的功能,但最好是非阻塞版本,这样我就可以使用await os.chmod(...),避免进行阻塞系统调用。
据我所知,目前没有可用的库提供此功能。
如何从头开始实现一个非阻塞的os.chmod(...)?更好的解决方案是不是已经存在?

为了实现Gunicorn工作进程,该进程使用asyncio。Gunicorn使用自旋的fchmod状态来表示工作进程是否存活。具体信息请见https://github.com/benoitc/gunicorn/blob/master/gunicorn/workers/workertmp.py - Tom Christie
1个回答

7

UNIX系统没有实现chmod系统调用的异步API。因此,最好的方法是在线程池中运行它:

await loop.run_in_executor(None, os.chmod, fname, mode)

你是不是想说:await loop.run_in_executor(None, os.chmod, fname, mode) - Yuval Pruss
@YuvalPruss 你是不是想说 await loop.run_in_executor(None, os.chmod, fname, mode)? ;) - Tom Christie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接