我使用带有Django的Celery将我的pdf生成放在后台,同时显示一个加载页面。
但是当任务完成时(即我的pdf已生成),我想重定向到下一个负责发送邮件并向用户显示友好确认消息的视图。
我知道我可以获得task_postrun或task_success信号,但我无法从那里重定向。
我搜索了几个小时,但没有找到任何解决方案,任何想法?
谢谢!
答案 0 :(得分:2)
有两种方法:
询问服务器:将 task_id 保存在存储PDF的模型中,并创建一个ajax视图,检查任务完成时每隔X秒,该视图的结果将确定它是否应重定向或仍在等待PDF。
result = MyTask.AsyncResult(task_id)
result.get()
实时网络:另一种方式是使用推送器pusher_client_python,当PDF生成完成时(在您的PDF创建过程中),向推送者发出api呼叫,推送者将向连接发送通知客户端(那个等待结果)并将重定向,这种方法更方便,因为您不必每隔X秒询问服务器。您需要了解套接字范例,但它很容易实现。
希望这有帮助。