1 Why
2 Notes of a CGI app
3 Example code
#! /usr/bin/env python3
import os,sys
# return bytes data, don't write to stdout any data inside this function
def main(arg1=None, arg2=None):
return b'any bytes data'
####################### CGI ########################
# when this script runs as a CGI app
def cgi_main():
import cgi,traceback
try:
# don't print out any thing in this section
form = cgi.FieldStorage()
arg1 = form.getvalue('arg1')
arg2 = form.getvalue('arg2')
body = main(arg1,arg2)
# write out http response
print('Content-Type: any_mime_type\r\n\r\n', end='')
sys.stdout.flush()
sys.stdout.buffer.write(body)
except:
print('Content-Type: text/plain\r\n\r\n', end='')
print(traceback.format_exc())
####################### CMD ########################
# when this scriipt runs as a command line tool
def cmd_main():
arg1 = sys.argv[1]
arg2 = sys.argv[2]
body = main(arg1, arg2)
sys.stdout.flush()
sys.stdout.buffer.write(body)
####################### ENTRY ########################
# run this script as a command line tool or CGI app
if __name__ == '__main__':
if os.environ.get('REMOTE_ADDR'):
cgi_main()
else:
cmd_main()
No comments:
Post a Comment