2017-06-05 1 views
6

asyncioイベントループ内でPython3コードを実行しています。Pythonの `os.chmod`のasyncioバージョン

私はos.chmod(...)の機能を使いたいと思っていますが、理想的にはこれの非ブロック版が好きで、await os.chmod(...)を使うことができ、ブロッキングシステムコールを避けてください。

少なくとも私が見ることができる以上、この機能を提供するライブラリはありません。

ノンブロッキングos.chmod(...)を最初から実装するにはどうすればよいですか?既存のソリューションはありますか?

+0

コンテキストの場合、私はGunicornワーカープロセスを実装していますが、それはasyncio使用しています。 Gunicornは、ワーキング・プロセス・アライブをシグナリングするために回転する 'fchmod'ステータスを使用します。 https://github.com/benoitc/gunicorn/blob/master/gunicorn/workers/workertmp.py –

答えて

5

UNIXシステムでは、chmodのシステム用に非同期APIは実装されていません。 は、このようにあなたができる最善のは、スレッドプールで実行されます。

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

パーフェクト - ありがとうございます。 –

+0

あなたは 'await loop.run_in_executer(None、os.chmod、fname、mode)'を意味しましたか? –

+0

@YuvalPruss 'await loop.run_in_executor(None、os.chmod、fname、mode)'を意味しましたか? ;) –