Я написал скрипт на Python для обработки некоторых данных из файлов CSV. Сценарий занимает от 3 до 30 минут, в зависимости от размера CSV.
Теперь я хочу подключить к нему веб-интерфейс, чтобы я мог загружать файлы данных CSV из любого места. Я написал простую страницу загрузки HTTP POST и использовал модуль CGI в Python, но через некоторое время сценарий просто отключился.
Сценарий выводит заголовки HTTP в начале и выводит биты данных после итерации по каждой строке CSV. Например, этот оператор печати будет запускаться каждые 30 секунд или около того.
# at the very top, with the 'import's
print "Content-type: text/html\n\n Processing ... <br />"
# the really long loop.
for currentRecord in csvRecords:
count = count + 1
print "On line " + str(count) + " <br />"
Я предполагал, что браузер получит заголовки и будет ждать, так как он продолжает получать маленькие биты данных. Но на самом деле кажется, что он вообще не получает никаких данных, и время ожидания Error 504
увеличивается при наличии CSV с большим количеством строк.
Возможно, где-то происходит кеширование? Из журналов
[Wed Jan 20 16:59:09 2010] [error] [client ::1] Script timed out before returning headers: datacruncher.py, referer: http://localhost/index.htm
[Wed Jan 20 17:04:09 2010] [warn] [client ::1] Timeout waiting for output from CGI script /Library/WebServer/CGI-Executables/datacruncher.py, referer: http://localhost/index.htm
Какой лучший способ решить эту проблему, или не подходит для запуска таких сценариев в браузере?
Edit:
Это скрипт для моего собственного использования - я обычно собираюсь использовать его на своем компьютере, но я подумал, что веб-интерфейс может пригодиться во время путешествий или, например, с телефона. Кроме того, загрузить действительно нечего - сценарий, скорее всего, отправит отчет по электронной почте в конце.