Render multiple images with preview

I need to make simple script for creating set of images to compile a 360 degrees panorama. So i need to render image - rotate camera - render image - rotate camera - render etc. I want to preview rendering images and here is a problem:
Render does not start for a second time.
Script renders first image, rotate camera and stops.
In console window i see:
render start
saved image
render finished
scene update
render start

and nothing more. No errors.
Script stops on
bpy.ops.render.render(‘INVOKE_DEFAULT’, write_still=True)

If i use
bpy.ops.render.render(write_still=True)
my code works correct but without preview.

Here is my code:



import bpy
from bpy import context
from bpy.app.handlers import persistent


@persistent
def onrenderfinished(scene):

    print('render finished')


    bpy.app.handlers.render_complete.remove(onrenderfinished)
    bpy.app.handlers.render_cancel.remove(onrenderfinished)
    sceneupdateposthadler = bpy.app.handlers.scene_update_post
    if onsceneupdatepost not in sceneupdateposthadler:
        sceneupdateposthadler.append(onsceneupdatepost)
    return {'FINISHED'}


@persistent
def onsceneupdatepost(scene):

    print('scene update')

    bpy.app.handlers.scene_update_post.remove(onsceneupdatepost)
    if Panorama360.CurrentPoint < len(Panorama360.TargetPoints):
        Panorama360.CurrentPoint = Panorama360.CurrentPoint + 1
        Panorama360.RenderToCurrentPoint(None)
    else:
        Panorama360.CurrentPoint = 0
    return {'FINISHED'}


class Panorama360(bpy.types.Operator):
    """Panorama360"""
    bl_idname = "render.panorama360"
    bl_label = "Panorama360"
    TargetPoints = []
    CurrentPoint = 0


    def execute(self, context):
        bpy.ops.object.select_all(action='DESELECT')
        PanoramaPointer = bpy.data.objects['PanoramaPointsSphere']
        Panorama360.TargetPoints = [(PanoramaPointer.matrix_world * v.co) for v in PanoramaPointer.data.vertices]
        Panorama360.RenderToCurrentPoint(None)
        return {'FINISHED'}


    def RenderToCurrentPoint(self):
        CameraTarget = bpy.data.objects['CameraTarget']
        CameraTarget.location = Panorama360.TargetPoints[Panorama360.CurrentPoint]
        rendercompletehadler = bpy.app.handlers.render_complete
        if onrenderfinished not in rendercompletehadler:
            rendercompletehadler.append(onrenderfinished)
        rendercancelhadler = bpy.app.handlers.render_cancel
        if onrenderfinished not in rendercancelhadler:
            rendercancelhadler.append(onrenderfinished)

        print('render start')


        bpy.data.scenes["Scene"].render.filepath = '//_%d.jpg' % Panorama360.CurrentPoint
#        bpy.ops.render.render(write_still=True)
        bpy.ops.render.render('INVOKE_DEFAULT', write_still=True)
        return {'FINISHED'}

I found that if i set big resolution to final render (in render - dimensions - resolution): 2300x2300 and more, script works fine and doesnt stop on second frame. If resolution is less than 2300x2300 - script stop after first render.
Is it any restrictions on render with ‘INVOKE_DEFAULT’ ?
May be render time or some else?