【发布时间】:2012-03-18 17:57:37
【问题描述】:
我正在开发一个 django 网络服务器,另一台机器(具有已知 IP)可以将电子表格上传到我的网络服务器。 更新电子表格后,我想触发对电子表格的一些处理/验证/分析(这可能需要超过 5 分钟 --- 时间太长,其他服务器无法合理地等待响应)然后向另一台机器(IP已知)发送一个HttpResponse,表示数据处理完成。
我意识到在返回 HttpResponse 后不能执行 processing.data(),但从功能上讲,我希望代码看起来像这样:
# 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)"
我知道如何单独编写每个函数,但我如何才能有效地调用processing.data() views.upload_spreadsheet 返回响应?
我尝试使用django's request_finished signaling framework,但这不会在返回HttpResponse 后触发processing.spreadsheet() 方法。我尝试在 views.upload_spreadsheet 上使用装饰器,但遇到了同样的问题。
我有一种暗示,这可能与写 middleware 或 custom class-based view 有关,我没有任何经验,所以我想我会向宇宙提出问题以寻求帮助.
感谢您的帮助!
【问题讨论】:
标签: python django decorator django-signals django-middleware