Exemple #1
0
def run(request):
    if request.method == 'POST':
        print 'got run request for makecatalogs'
        # remove records for exited processes
        Process.objects.filter(name='makecatalogs', exited=True).delete()
        while True:
            # Loop until there are no more running processes
            processes = Process.objects.filter(name='makecatalogs',
                                               exited=False)
            if not processes:
                break
            # clean up any processes no longer in the process table
            for process in processes:
                if not pid_exists(process.pid):
                    process.delete()
            processes = Process.objects.filter(name='makecatalogs',
                                               exited=False)
            if not processes:
                break
            time.sleep(1)

        proc = subprocess.Popen([MAKECATALOGS, REPO_DIR],
                                stdout=subprocess.PIPE,
                                stderr=subprocess.PIPE)
        record = Process(name='makecatalogs')
        record.pid = proc.pid
        record.save()
        while True:
            output = proc.stdout.readline().decode('utf-8').rstrip('\n')
            if output:
                record.statustext = output.rstrip('\n')
                record.save()
            if proc.poll() != None:
                break

        record.statustext = 'Done'
        record.exited = True
        record.exitcode = proc.returncode
        record.save()
        return HttpResponse(json.dumps('done'),
                            content_type='application/json')
    return HttpResponse(json.dumps('must be a POST request'),
                        content_type='application/json')
Exemple #2
0
def run(request):
    if request.method == 'POST':
        print 'got run request for makecatalogs'
        # remove records for exited processes
        Process.objects.filter(name='makecatalogs', exited=True).delete()
        while True:
            # Loop until there are no more running processes
            processes = Process.objects.filter(name='makecatalogs',
                                               exited=False)
            if not processes:
                break
            # clean up any processes no longer in the process table
            for process in processes:
                if not pid_exists(process.pid):
                    process.delete()
            processes = Process.objects.filter(name='makecatalogs',
                                               exited=False)
            if not processes:
                break
            time.sleep(1)

        proc = subprocess.Popen(
            [MAKECATALOGS, REPO_DIR],
            stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        record = Process(name='makecatalogs')
        record.pid = proc.pid
        record.save()
        while True:
            output = proc.stdout.readline().decode('utf-8').rstrip('\n')
            if output:
                record.statustext = output.rstrip('\n')
                record.save()
            if proc.poll() != None:
                break

        record.statustext = 'Done'
        record.exited = True
        record.exitcode = proc.returncode
        record.save()
        return HttpResponse(json.dumps('done'),
                            content_type='application/json')
    return HttpResponse(json.dumps('must be a POST request'),
                         content_type='application/json')