POST
|
My organization is using a Python toolbox to upload two SD files every two hours. Most of the time we have no issues, but sometimes the upload has a problem. I've added a loop in the script to attemp the upload again and most of the time it will upload the second time. Here are the errors from the Server Logs: SEVERE -- Failed to rename cache folder. *This happen every time I upload but does not seem to effect the upload Two below occur at the same instance (I assume they are the same problem) SEVERE -- Error executing tool.: ERROR 001360: Failed to get basic item metadata for service definition upload. Failed to execute (Publish Service Definition). *This is critical. When I get this error the upload does not work SEVERE -- Failed to get basic item metadata for service definition upload.: ERROR: code:404, Could not find resource or operation 'ie2c45393-1528-4e03-a9ba-3a28f6ad754b' on the system., No resource could be found at that address. *Same as 1360 The upload routine of my script: def ServerUpload(serviceName, newDesc, summary, tags): # Current map document try: mapdoc = arcpy.mapping.MapDocument("CURRENT") mapdocbase = os.path.basename(mapdoc.filePath) mxdpath = os.path.dirname(mapdoc.filePath) except: arcpy.AddMessage('PROGRAM STOPPED ---NO CURRENT MXD IDENTIFIED ---Must run this tool within a (named) MXD') sys.exit(0) # Service name HARD CODED sddraftFile = mxdpath + "\\" + serviceName + ".sddraft" # Create connection file con_name = ("SerConTEMP_" + serviceName + ".ags") con = mxdpath + "\\" + con_name loopNum = 0 while loopNum < 3: if os.path.exists(con): try: os.remove(con) except: arcpy.AddMessage("PROGRAM STOPPED ---Could not delete server connect file") sys.exit(0) try: use_arcgis_desktop_staging_folder = False arcpy.mapping.CreateGISServerConnectionFile("PUBLISH_GIS_SERVICES", mxdpath, con_name, server_url, "ARCGIS_SERVER", use_arcgis_desktop_staging_folder, mxdpath, LoginName, PassWord, "SAVE_USERNAME") sleep(10) except: arcpy.AddMessage('PROGRAM STOPPED ---COULD NOT CREATE SERVER CONNECT FILE ---Server url, login, or password may be incorrect') sys.exit(0) if os.path.exists(sddraftFile): try: os.remove(sddraftFile) except: arcpy.AddMessage('PROGRAM STOPPED ---NOT ABLE TO DELETE SDDRAFTFILE FILE ---File may be locked') sys.exit(0) try: analysis = arcpy.mapping.CreateMapSDDraft(mapdoc, sddraftFile, serviceName, 'ARCGIS_SERVER', con, True, "TIMS", summary, tags) #analysis = arcpy.mapping.CreateMapSDDraft(mapdoc, sddraftFile, serviceName, 'ARCGIS_SERVER', con, True, None, summary, tags) except: arcpy.AddMessage('PROGRAM STOPPED ---NOT ABLE TO CREATE SDDRAFTFILE FILE ---File variables may be incorrect') # Read and update the sddraft xml xml = sddraftFile doc = DOM.parse(xml) # Update the description try: descriptions = doc.getElementsByTagName('Description') for desc in descriptions: if desc.parentNode.tagName == 'ItemInfo': if desc.hasChildNodes(): desc.firstChild.data = newDesc except: arcpy.AddMessage('NOT ABLE TO UPDATE DESCRIPTION IN SDDRAFT FILE ---File may be locked') # Update KML. try: soe = 'KmlServer' typeNames = doc.getElementsByTagName('TypeName') for typeName in typeNames: # Get the TypeName we want to disable. if typeName.firstChild.data == soe: extension = typeName.parentNode for extElement in extension.childNodes: # Disabled SOE. if extElement.tagName == 'Enabled': extElement.firstChild.data = 'false' except: arcpy.AddMessage('NOT ABLE TO UPDATE KML IN SDDRAFT FILE ---File may be locked') try: outXml = xml f = open(outXml, 'w') doc.writexml( f ) f.close() except: arcpy.AddMessage('NOT ABLE TO WRITE SDDRAFT XML ---File may be locked') #******************************************************************************************** #Analyze the service definition draft analysisSddraft = arcpy.mapping.AnalyzeForSD(sddraftFile) # Print errors, warnings, and messages returned from the analysis arcpy.AddMessage("The following information was returned during analysis of the MXD:") for key in ('messages', 'warnings', 'errors'): arcpy.AddMessage('----' + key.upper() + '---') vars = analysisSddraft[key] for ((message, code), layerlist) in vars.iteritems(): arcpy.AddMessage(' ' + message + ' (CODE %i)' % code) arcpy.AddMessage(' applies to: ') for layer in layerlist: arcpy.AddMessage(layer.name) arcpy.AddMessage("") # Service definition variables sdFile = mxdpath + "\\" + serviceName + ".sd" if os.path.exists(sdFile): try: os.remove(sdFile) except: arcpy.AddMessage('PROGRAM STOPPED ---NOT ABLE TO DELETE ORIGINAL SD FILE ---File may be locked') sys.exit(0) try: arcpy.StageService_server(sddraftFile, sdFile) sleep(5) except: arcpy.AddMessage('PROGRAM STOPPED ---NOT ABLE TO CREATE SD FILE FROM SDDRAFT FILE ---SDDRAFT file may be corrupt') sys.exit(0) try: arcpy.UploadServiceDefinition_server(sdFile, con) loopNum = 3 except: if loopNum < 2: loopNum = loopNum + 1 arcpy.AddMessage("Program failed to upload SD file. Attempting to upload again [" + str(loopNum) + "]") else: arcpy.AddMessage('PROGRAM STOPPED ---NOT ABLE TO UPLOAD SD FILE TO the server ---Server may be experiencing problems') arcpy.AddMessage('PLEASE RE-RUN THE TOOL. Close MXD, re-open MXD, and re-run tool') sys.exit(0) if os.path.exists(sdFile): try: os.remove(sdFile) except: arcpy.AddMessage('NOT ABLE TO DELETE SD FILE ---File may be locked') if os.path.exists(con): try: os.remove(con) except: arcpy.AddMessage("PROGRAM STOPPED ---Could not delete server connect file") sys.exit(0) arcpy.AddMessage('UPLOAD TO SERVER SUCCESSFUL at ' + unicode((datetime.datetime.now()).replace(microsecond=0))) AddLog('PROGRAM SUCCESSFUL UPDATED, NCDOT SERVICE: ' + serviceName, False)
... View more
08-08-2013
04:57 AM
|
0
|
2
|
3005
|
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:23 AM
|