Если вы хотите просто избежать использования сотен сервисов, вы можете настроить один входной контроллер nginx (с одним входным классом в вашем кластере), а затем создать несколько входящих . ] используя единственный входной контроллер. (Это также может быть один Ingress, если хотите, с маршрутизацией на основе имени хоста)
Этот контроллер в основном работает в развертывании с несколькими модулями и может масштабироваться вверх и вниз (например, с помощью HPA или / и кластерный автоскалер или / и VPA ).
Контроллер nginx заботится о перезагрузке nginx с новыми конфигами каждый раз, когда вы их меняете (без простоя). Вы также можете иметь SSL-завершение для каждого входа в Kubernetes, так что если у вас есть несколько доменов, которые также можно обрабатывать.
Надеюсь, это поможет!
import os, random
random.choice(os.listdir("C:\\")) #change dir name to whatever
Относительно Вашего отредактированного вопроса: во-первых, я предполагаю, что Вы знаете риски использования a dircache
, а также то, что это удержано от использования с тех пор 2.6 и удалено в 3,0.
Второй из всех, я не вижу, где любое состояние состязания существует здесь. Ваш dircache
объект в основном неизменен (после того, как список каталогов кэшируется, он никогда не читается снова), таким образом, никакой вред в параллельных чтениях от него.
Кроме этого, я не понимаю, почему Вы видите любую проблему с этим решением. Это прекрасно.
Если Вы хотите включенные каталоги, ответ A Yuval. Иначе:
import os, random
random.choice([x for x in os.listdir("C:\\") if os.path.isfile(os.path.join("C:\\", x))])
Решение агностика языка:
1) Получите общее количество нет. из файлов в указанном каталоге.
2) Выберите случайное число от 0 до [общее количество нет. из файлов - 1].
3) Получите список имен файлов как соответственно индексируемый набор или такой.
4) Выберите энный элемент, где n является случайным числом.
Если Вы не будете знать перед рукой, что файлы там, то необходимо будет получить список, то просто выбирают случайный индекс в списке.
Вот одна попытка:
import os
import random
def getRandomFile(path):
"""
Returns a random filename, chosen among the files of the given path.
"""
files = os.listdir(path)
index = random.randrange(0, len(files))
return files[index]
Править: Вопрос теперь упоминает страх перед "состоянием состязания", которое я могу только принять, типичная проблема файла того, чтобы быть, добавил/удалил, в то время как Вы находитесь в процессе попытки выбрать случайный файл.
Я не полагаю, что существует путь вокруг этого кроме учета того факта, что любая операция ввода-вывода по сути "небезопасна", т.е. это может перестать работать. Так, алгоритм для открытия случайным образом выбранного файла в данном каталоге должен:
open()
файл, выбранный, и дескриптор отказ, начиная с файла, больше не мог бы быть тамIndependant с языка использовал, можно считать все ссылки на файлы в каталоге в datastructure как массив (что-то как 'listFiles'), получить длину массива. вычислите случайное число в диапазоне '0' к 'arrayLength-1' и получите доступ к файлу в определенном индексе. Это должно работать, не только в Python.