Запись текстового файла в удаленный микросервис в режиме реального времени ⇐ Python

Программы на Python
Anonymous
Запись текстового файла в удаленный микросервис в режиме реального времени

Сообщение Anonymous »

Каков эффективный способ дополнить приведенный ниже код, чтобы отправить POST в микросервис отдыха, расположенный удаленно через Интернет по адресу mydomain.com/api/my-endpoint, содержимое, записанное в данный момент в локальный файл?< /p>
ПОНЯТИЯ:
Множество различных точек процесса в рамках потока программы Python пишут в один и тот же локальный файл, вызвав метод writeFile('some line of text') SomeObject.py, показанный ниже.
Поэтому данные в файле генерируются во многих различные части программы Python распределяются по множеству разных файлов .py, а затем все данные передаются через вызовы метода writeFile('some line of text') SomeObject.py.
ТРЕБОВАНИЕ:
Удаленный микросервис, расположенный удаленно через Интернет по адресу mydomain.com/api/my-endpoint необходимо также получать каждую строку, записанную в локальный файл во многих различных точках потока локальной программы Python, посредством вызовов метода writeFile('некоторая строка текста') SomeObject.py. code>.
Используется Python 3.12.
Кто-нибудь может показать код, который будет эффективно отправлять каждую записанную строку в локальный файл с помощью метода writeFile('some line of text') SomeObject.py, показанного ниже
микросервису, работающему в конечной точке mydomain.com/api/my-endpoint ?
НЕКОТОРЫЕ ВОЗМОЖНЫЕ ПОДХОДЫ:
Проблема, которую я вижу, заключается в том, что может возникнуть узкое место, если запрос POST создается для каждой строки, записанной методом writeFile('some line of text') SomeObject.py, показанным ниже.
Помните, что writeFile('некоторая строка текста') метода SomeObject.py, показанного ниже, вызывается из множества разных мест, разбросанных по множеству файлов/объектов в программе Python. Это означает, что каждый раз, когда запускается метод writeFile('some line of text') в SomeObject.py, показанный ниже, в файл за раз печатается только одна строка.
Одним из вариантов может быть добавление некоторой логики для создания буфера вокруг метода writeFile('some line of text') SomeObject.py, показанного ниже, но это может привести к чрезмерному сложный код для выполнения чего-либо, что можно сделать с помощью какой-либо библиотеки или бесплатного инструмента с открытым исходным кодом, который может абстрагировать всю необходимую логику, чтобы эту задачу мог выполнить более краткий код.
Может быть другой вариант. использовать некоторую библиотеку или инструмент для прослушивания файла во время его записи и потоковой передачи данных из файла в конечную точку mydomain.com/api/my-endpoint во время записи файла.< /p>
Локальная машина должна иметь возможность легко подготовиться посредством автоматизации для выполнения этой задачи с использованием бесплатного программного обеспечения, поскольку каждая локальная машина должна быть эфемерной. Поэтому мы не можем использовать какие-либо решения, требующие сложной установки или лицензий.
КОД:
def writeFile(self, line):
filePath = 'some valid path'
fileAndPath = filePath + '/myfile.txt'
line = str(line)
with open(fileAndPath, "a", encoding="utf-8") as f:
f.write(line + '\n')
try:
print(line)
except UnicodeEncodeError as e:
print(line.encode('utf-8'))
print("The preceding line is returned here as a byte array because it threw a UnicodeEncodeError which was handled by encoding its as utf-8, which returns a byte array. ")


Подробнее здесь: https://stackoverflow.com/questions/790 ... croservice

Вернуться в «Python»