Tôi đã viết một tập lệnh python để xử lý một số dữ liệu từ các tệp CSV. Tập lệnh mất từ 3 đến 30 phút để hoàn thành, tùy thuộc vào kích thước của CSV.Tạo giao diện web cho tập lệnh mất 30 phút để thực thi
Bây giờ tôi muốn đưa vào giao diện web với điều này, vì vậy tôi có thể tải lên tệp dữ liệu CSV từ bất kỳ đâu. Tôi đã viết một trang tải lên HTTP POST cơ bản và sử dụng mô-đun CGI của Python - nhưng tập lệnh chỉ hết thời gian sau một thời gian.
Tập lệnh sẽ xuất ra các tiêu đề HTTP ngay từ đầu và xuất ra các bit dữ liệu sau khi lặp qua tất cả các dòng của CSV. Ví dụ, câu lệnh in này sẽ kích hoạt sau mỗi 30 giây.
# 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 />"
Tôi giả định trình duyệt sẽ nhận được tiêu đề và chờ vì nó tiếp tục nhận được một chút dữ liệu. Nhưng những gì thực sự dường như xảy ra là nó không nhận được bất kỳ dữ liệu nào cả, và Error 504
lần ra khi đưa ra một CSV với nhiều dòng.
Có thể có một số bộ nhớ đệm xảy ra ở đâu đó? Từ nhật ký,
[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
Cách tốt nhất để giải quyết vấn đề này là gì, hoặc không thích hợp để chạy các tập lệnh như vậy trong trình duyệt?
Edit: Đây là một kịch bản để sử dụng riêng của tôi - Tôi thường có ý định sử dụng nó trên máy tính của tôi, nhưng tôi nghĩ một giao diện dựa trên web có thể có ích khi đi du lịch, hoặc ví dụ từ một chiếc điện thoại. Ngoài ra, thực sự không có gì để tải xuống - kịch bản hầu hết có thể sẽ gửi báo cáo ở cuối email.
Bạn có nghĩ rằng bất kỳ ai trên trái đất này đủ kiên nhẫn chờ 30 phút để tải trang web trong trình duyệt, thay vì tải xuống dưới dạng dữ liệu? – YOU
Đây là tập lệnh để tôi sử dụng - tôi thường có ý định sử dụng nó trên máy tính của mình, nhưng tôi nghĩ giao diện dựa trên web có thể hữu ích khi di chuyển hoặc ví dụ từ điện thoại. Ngoài ra, thực sự không có gì để tải xuống - kịch bản sẽ gửi báo cáo qua email ở cuối. – Pranab
@Pranab: "Đây là tập lệnh để tôi sử dụng." Vậy bạn có vấn đề gì? Tại sao không chỉ để nó chạy? Tại sao lộn xộn xung quanh? Nếu nó dành cho bạn - và nó chỉ gửi một email - nó thậm chí không phải là một trang web? Tại sao không chỉ viết một kịch bản Python đơn giản? –