What is the current best practice and method of loading a webpage (that has 10 - 15 seconds worth of server side script). 

User clicks a link > server side runs > html page is returned (blank
page for 10 - 15 seconds).
User clicks a link > html page is immediately returned (with progress
bar) > AJAX post request to the server side > complete script > return result to
html.
Other options (threading?)

I am running Google App Engine (Python) Standard Environment.
The way we're doing it is using the Ajax approach (the second one) which is what everyone else does.
You can use Task Queues to run your scripts asynchronously and return the result to front end using FCM (Firebase Cloud Messaging).
You should also try to break the script into multiple task queues to make it run faster.
Best practice for loading webpage with long server side script