AnsweredAssumed Answered

tracking the progress of a long running geoprocessing service

Question asked by tyndallt_esri on May 27, 2014
Latest reply on May 27, 2014 by tyndallt_esri
I have a geoprocessing service that takes a list of x,y locations, snaps them to a road network and reports information about the snapped location (snapped x y, milepost, milepost offset ect...).

This service will sometimes be called with a very large list of locations to process (>10,000) and I want to track the progress of the script. The process will be initiated by a user from a javascript based application.

If I enable Info message level reporting on the service I can use arcpy.AddMessage in the python script that implements the service to report % completion as I work through the list of locations on the server. But this also parrots back all the input parameters (including the entire list of locations) on every call to checkStatus. Very verbose.

I'm searching for a way to report back % completion of the script without having each checkStatus request containing such a large payload.

I tried using the Upload capability of geoprocessing services to upload the large locations list and rewrote the geoprocessing script to accept a GPDataFile parameter of the form, {itemID: "guid"}, thinking that the messages returned in the checkStatus would just parrot back the {itemID: "guid"}; but it doesn't, it still sends back the entire locations list in the messages on checkStatus calls.

Any idea's on how I can accomplish tracking without exchanging such large messages?

I thought about just enabling warning level messages and using arcpy.AddWarning to report % completion but that just seems like using an inappropriate messaging system to report informative messages.

Tom
AZ Dept. of Transportation

Outcomes