Tôi đang phát triển máy chủ web django mà trên đó một máy khác (có IP đã biết) có thể tải lên bảng tính tới máy chủ web của tôi. Sau khi bảng tính đã được cập nhật, tôi muốn kích hoạt một số quá trình xử lý/xác nhận/phân tích trên bảng tính (có thể mất> 5 phút --- quá lâu để máy chủ khác chờ phản hồi hợp lý) và sau đó gửi máy (với một IP đã biết) một HttpResponse chỉ ra rằng việc xử lý dữ liệu đã hoàn tất.chức năng kích hoạt sau khi trả lại HttpResponse từ chế độ xem django
Tôi nhận ra rằng bạn không thể làm processing.data()
sau khi trở về một HttpResponse
, nhưng chức năng tôi muốn mã mà trông giống như sau:
# processing.py
def spreadsheet(*args, **kwargs):
print "[robot voice] processing spreadsheet........."
views.finished_processing_spreadsheet()
# views.py
def upload_spreadsheet(request):
print "save the spreadsheet somewhere"
return HttpResponse("started processing spreadsheet")
processing.data()
def finished_processing_spreadsheet():
print "send good news to other server (with known IP)"
tôi biết làm thế nào để viết từng chức năng riêng, nhưng làm thế nào tôi có thể có hiệu quả hãy gọi processing.data()
sauviews.upload_spreadsheet
đã trả lại câu trả lời?
Tôi đã thử sử dụng django's request_finished
signaling framework nhưng điều này không kích hoạt phương thức processing.spreadsheet()
sau khi trả lại HttpResponse
. Tôi đã thử sử dụng một trang trí trên views.upload_spreadsheet
với cùng một vấn đề.
Tôi có một ý tưởng rằng việc này có thể liên quan đến việc viết middleware hoặc có thể là custom class-based view, tôi không có bất kỳ kinh nghiệm nào vì vậy tôi nghĩ tôi sẽ đặt câu hỏi cho vũ trụ để tìm kiếm trợ giúp.
Cảm ơn sự giúp đỡ của bạn!
Cảm ơn bạn đã giải thích lý do tại sao điều này là cần thiết, Cristophe. Dựa trên lời giải thích của bạn và jpic, tôi nghĩ tôi sẽ kiểm tra cần tây sau khi ngủ nhiều hơn một chút. – dino