I have a script that runs for a long time (2 days) for deploying a large Utility Network. The script makes a connection to portal early on using the SignInToPortal function, however by the time subsequent commands are run I get a ...
Error: ERROR 002119: Must be connected and signed into the portal.
Failed to execute (AssetPackageToUtilityNetwork).
I checked the token returned by SignInToPortal and it expires 12 hours after the request. Using Fidder to capture the request I can see "expiration" is part of the request.
/portal/sharing/rest/generateToken/username=utilitynetworkowner&password=abcdefg&expiration=720&client=referer&referer=http://www.esri.com/AGO/B90FF998-17C8-4248-8F0A-A7000000000
Is there anyway to change the timeout request?
Thanks,
Neil
Solved! Go to Solution.
Hi,
In one of my projects I refresh token (if needed) before using token in some operation. I do it a little bit earlier than token expires.
@NeilEtheridge you could generate the token with the below code, which includes the expiration parameter. This value is in minutes, and the max is 15 days:
import requests, json
# Disable warnings
requests.packages.urllib3.disable_warnings()
username = "portaladmin"
password = "********"
tokenURL = 'https://portal.esri.com:7443/arcgis/sharing/rest/generateToken/'
params = {'f': 'pjson', 'username': username, 'password': password, 'referer': 'https://portal.esri.com', 'expiration': 21600}
r = requests.post(tokenURL, data = params, verify=False)
response = json.loads(r.content)
token = response['token']
print(token)
Thanks Jake for the reply - I should have thought to try it this way as I already do similar in other scripts when making direct calls to the REST interface. I wasn't sure if subsequent Utility Network commands would recognise this token so went with the down the same track as Gintautas has suggested below.
Hi,
In one of my projects I refresh token (if needed) before using token in some operation. I do it a little bit earlier than token expires.
Thanks Gintautas. This was the approach went with ... just checking the token hadn't expired before I needed it again.
Cheers,
Neil