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