在使用django视图回复之前等待芹菜任务完成

时间:2013-03-04 17:15:02

标签: django django-views celery django-celery

我正在尝试使用芹菜来尽可能地提高浏览器响应时间。我正在处理这个工作流程问题。

  1. 用户转到第一页,输入数据。
  2. View启动芹菜任务,然后使用第二页回复。
  3. 用户在第二页上输入数据。
  4. 查看以第三页回复,这需要完成第1页视图回复启动的任务。
  5. 因此,在视图可以响应第3页的请求之前,需要检查芹菜任务是否完成。

    我目前的想法是通过这个模型来实现的:

    class CeleryTaskmeta(models.Model): # found using python manage.py inspectdb
        task_id = models.CharField(max_length=255, unique=True)
        status = models.CharField(max_length=150)
        result = models.TextField(blank=True)
        date_done = models.DateTimeField()
        traceback = models.TextField(blank=True)
        hidden = models.IntegerField()
        meta = models.TextField(blank=True)
    
        class Meta:
            db_table = u'celery_taskmeta'
    

    是否有效/最好存储celerytaskmeta_id。然后当用户请求第3页时,我会用以下内容启动视图:

    def SomeView(request):
        result = CeleryTaskmeta(id = celerytaskmeta_id)
        result.get()
        rest of SomeView ...
    

    主题上,是否很难使用芹菜开始一项冗长的任务,做一些其他的事情,然后在完成漫长的任务后继续使用?

0 个答案:

没有答案