2013-07-18 15 views
3

我使用芹菜和Django将我的pdf生成在后台,同时我显示一个加载页面。芹菜任务完成后重定向到模板

但是,当任务完成(即生成我的pdf)时,我想重定向到负责发送邮件并向用户显示友好确认消息的下一个视图。

我知道我可以得到task_postrun或task_success信号,但我不能从那里重定向。

我搜索了几个小时,但没有找到任何解决方案,有什么想法?

谢谢!

回答

2

有两种方式:

  1. 要求服务器:保存在模型中TASK_ID你在哪里存储的PDF,并创建一个Ajax视图如果任务完成,检查每X秒,这个视图的结果将决定它是应该重定向还是等待PDF。

    result = MyTask.AsyncResult(task_id) 
    result.get() 
    
  2. 实时的网络:另一种方法是使用推进器与pusher_client_python,当PDF生成完成(在你的PDF创建rutine),使API调用来推动器谁将会通知发送到连接的客户端(那一个等待结果)并且将重定向,这种方法更加方便,因为您不必每隔X秒就问一次服务器。您将需要了解套接字范例,但它很容易实现。

希望这会有所帮助。

+1

谢谢!但第一个解决方案似乎不是最理想的,是不是有一种方法来使用芹菜api或django功能来重定向? 至于第二个解决方案,我宁愿不使用第三方web服务这样一个简单的事情:) –

+0

你需要控制请求做出重定向,你做了“生成文档”响应页面,你不再需要控制这个请求来完成它,你必须向服务器请求(1)或做一些实时推送(2)。 – panchicore

+0

谢谢,我刚刚与ajax请求;) –