Category Hierarchy

对于Django,我正在用后台进程进行大处理,这会在数据库中进行大量更新。我用一个原子事务来保护整个大的处理,因此如果它失败了,数据库就会回到它以前的状态。为了了解处理是在哪个步骤中进行的,我更新了一个专门用于该步骤的表。我想实时显示在哪个步骤的处理是在一个网站上(所以,从另一个进程)。不幸的是,我看不到专用表中的步骤发生了变化,因为事务只在处理结束时提交。总而言之,我有一些类似这样的东西:

对于后台进程:

with transaction.atomic():
    task.step = 'Step 1'
    task.save()

    ... do step 1 processing ...

    task.step = 'Step 2'
    task.save()

    ... do step 2 processing ...

    task.step = 'Finised'
    task.save()

在网站上,我将有一个Ajax视图,它将做这样的事情:

GetProcessingProgressView(View):
    def get(self, request, **kwargs):
        ... 
        task = Task.objects.get(....)
        data = { 'step' : task.step }
        return HttpResponse(json.dumps(data), content_type='application/json')

网站上显示的唯一步骤是“完成”(即事务提交时)。

在事务尚未提交的情况下,我如何从另一个进程执行我的大型处理步骤?有没有办法从原子事务中排除一个表?实际上,我看到的唯一解决方案是使用另一个数据库,或者使用文件而不是数据库:你会怎么做?

转载请注明出处:http://www.cpss-cn.com/article/20230526/1689131.html