Поскольку лямбда-функция просто запускается в контейнере в среде linux, мы можем использовать ОС, чтобы сообщить нам, в общем, сколько места осталось во временной файловой системе.
from subprocess import check_output
out = str(check_output(["df", '-k']))
print(out)
result = re.search(r"(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\%\s+\/tmp", out)
size, used, available, used_pct = (int(g) for g in result.groups())
print(size, used, available, used_pct) # 538424 440 526148 1
Вот что здесь происходит. Сначала мы используем функцию subprocess.check_output
для запуска команды: df -k
, которая отображает строку с информацией об использовании дискового пространства в килобайтах. Вот пример этого вывода лямбда-функции:
Filesystem 1K-blocks Used Available Use% Mounted on\n/dev/root 6127168 4978732 1132052 82% /\n/dev/vdb 1965904 45296 1904224 3% /dev\n/dev/loop0 538424 440 526148 1% /tmp\n
Вы видите, что в конце строки находится раздел /tmp
. Поэтому мы берем выходные данные и ищем их по шаблону регулярных выражений: (\d+)\s+(\d+)\s+(\d+)\s+(\d+)\%\s+\/tmp
, который разделяет соответствующие поля на 4 группы, которые мы можем установить для их собственных переменных, которые представляют size
: общий размер раздела (в КБ), used
: Объем используемого в настоящее время пространства (в КБ), available
: объем пространства, все еще доступного в разделе (в КБ), и used_pct
: процент используемого пространства раздела.
Это довольно простой способ получить доступное пространство, я бы не стал его использовать, если необходимы точные измерения или для предположения, можно ли записать новый файл на диск. Но если вы просто регистрируете его на выполнение для отладки, все должно быть прекрасно.