Как заставить mod_python ждать обновления текстового файла для чтения?
import cgi
def fill():
s = """\
<html><body>
<form method="get" action="./show">
<p>Type a word: <input type="text" name="word">
<input type="submit" value="Submit"</p>
</form></body></html>
"""
return s
# Receive the Request object
def show(req):
# The getfirst() method returns the value of the first field with the
# name passed as the method argument
word = req.form.getfirst('word', '')
print "Creating a text file with the write() method."
text_file = open("/var/www/cgi-bin/input.txt", "w")
text_file.write(word)
text_file.close()
# Escape the user input to avoid script injection attacks
#word = cgi.escape(word)
'''Input triggers the application to start its process'''
output_file=open("/var/www/cgi-bin/output.txt", "r").read()
s = """\
<html><body>
<p>The submitted word was "%s"</p>
<p><a href="./fill">Submit another word!</a></p>
</body></html>
"""
return s % output_file
Это моя программа, здесь мне нужно отправить текст в мое приложение, и вывод приложения записан в файле с именем output.txt, но приложение занимает некоторое время в зависимости от размера ввода, проблема заключается в этом утверждении output_file=open("/var/www/cgi-bin/output.txt", "r").read()
читает output.txt до того, как приложение записывает новые данные в файл. Я хочу, чтобы output_file должен был дождаться завершения выполнения приложения и получить обновленные данные из output.txt.
Я очень старался, но не мог понять, пожалуйста, помогите мне через это:)
Спасибо:)
1 ответ
Допустим, у вас есть три разных запроса, которые поступают в ваше приложение одновременно. Все они будут пытаться записывать и читать из одних и тех же файлов одновременно.
Чтобы приведенный выше код работал с параллельными запросами, вам необходимо использовать уникальные имена файлов для каждого запроса / ответа. Придумайте стратегию изменения, включающую уникальный идентификатор (например, отметку времени + IP-адрес клиента) в именах файлов для ваших входных и выходных файлов.