4

我使用 Celery 和 Django 将我的 pdf 生成置于后台,同时显示一个加载页面。

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

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

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

谢谢 !

4

1 回答 1

3

有两种方法:

  1. 询问服务器:将task_id保存在存储 PDF 的模型中,并创建一个 ajax 视图以每隔 X 秒检查一次任务是否完成,该视图的结果将确定它是否应该重定向或仍然等待 PDF。

    result = MyTask.AsyncResult(task_id)
    result.get()
    
  2. 实时网络:另一种方法是将 pusher 与pusher_client_python一起使用,当 PDF 生成完成时(在您的 PDF 创建规则中),向 pusher 发出 api 调用,后者将向连接的客户端发送通知(等待结果的客户端)和将重定向,这种方法更方便,因为您不必每 X 秒询问一次服务器。您将需要了解套接字范例,但它很容易实现。

希望这可以帮助。

于 2013-07-18T16:39:57.527 回答