How to I close down a python server built using flask
It stays alive because you're not closing it. With Ctrl+Z you're removing the execution from current terminal without killing a process.
To stop the execution use Ctrl+C
When I run this simple code:
from flask import Flask,render_template
app = Flask(__name__)
@app.route('/')
def index():
    return 'this is the homepage'
if __name__ ==  "__main__":
    app.run(debug=True, host="0.0.0.0",port=8080)
It works fine but when I close it using ctrl+z in the terminal and try to run it again I get OSError: [Errno 98] Address already in use
So I tried changing the port address and re-running it which works for some of the port numbers I enter. But I want to know a graceful way to clear the address being used by previous program so that it is free for the current one. 
Also is what is the apt way to shutdown a server and free the port address.
Kindly tell a simple way to do so OR explain the method used fully because I read solutions to similar problems but didn't understand any of it.
When I run
netstat -tulpn
The output is : 
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:3689            0.0.0.0:*               LISTEN      4361/rhythmbox
tcp6       0      0 ::1:631                 :::*                    LISTEN      -
tcp6       0      0 :::3689                 :::*                    LISTEN      4361/rhythmbox
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           3891/chrome
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           -
udp        0      0 0.0.0.0:39223           0.0.0.0:*                           -
udp        0      0 127.0.1.1:53            0.0.0.0:*                           -
udp        0      0 0.0.0.0:68              0.0.0.0:*                           -
udp        0      0 0.0.0.0:631             0.0.0.0:*                           -
udp        0      0 0.0.0.0:58140           0.0.0.0:*                           -
udp6       0      0 :::5353                 :::*                                3891/chrome
udp6       0      0 :::5353                 :::*                                -
udp6       0      0 :::41938                :::*                                -
I'm not sure how to interpret it.    
the output of ps aux | grep 8080 
is :
shreyash 22402  0.0  0.0  14224   928 pts/2    S+   01:20   0:00 grep --color=auto 8080
I don't know how to interpret it.
Which one is the the process name and what is it's id?