Вообще говоря, вы хотите написать простой сервер, который возвращает HTML-форму по запросу GET и обрабатывает эту форму по запросу POST.
Например, очень упрощенный, но полностью рабочий пример с использованием Бутылка :
from bottle import get, post, run
from subprocess import check_output
@get('/')
def home():
return '<form method="post"><input type="submit" value="Click me!"></form>'
@post('/')
def on_submit():
return "Today's date is " + check_output(['date']).decode()
run(host='localhost', port=8080)
или использование только стандартных библиотечных материалов с http.server, это та же концепция, хотя есть немного больше шаблонов:
import http.server
import socketserver
from subprocess import check_output
class Handler(http.server.BaseHTTPRequestHandler):
def html_preamble(self):
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
def do_GET(self):
self.html_preamble()
response = '<form method="post"><input type="submit" value="Click me!"></form>'
self.wfile.write(response.encode('utf-8'))
def do_POST(self):
self.html_preamble()
response = "Today's date is " + check_output(['date']).decode()
self.wfile.write(response.encode('utf-8'))
PORT = 8081
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("serving at port", PORT)
httpd.serve_forever()
В любом случае, поскольку вы написали сценарий Selenium на Python, вы можете просто импортировать соответствующую функцию и вызывать их напрямую, а не проходить через подпроцесс, просто следите за утечками ресурсов и убедитесь, что ваша функция очищает любые ресурсы, которые не нужно хранить между запросами.