Хорошо, мне удалось заставить его работать, как я хочу (хотя некоторые/большинство может не согласиться с методом). Я использовал Flask, как рекомендовано ниже. Часть, которая может считаться "неправильной", - это контрольная петля 404. Это неправильный дизайн и приводит к ошибке "застрявшей script" в некоторых браузерах, если она продолжается слишком долго. Тем не менее, script, который я хочу запустить, длится недолго, чтобы это было проблемой.
Спасибо за помощь и, пожалуйста, дайте мне знать, если у вас есть другие предложения.
Flask App:
import threading
import subprocess
import os
import sys
from flask import Flask
from flask import render_template, abort
app = Flask(__name__)
app.debug = True
def run_script():
theproc = subprocess.Popen([sys.executable, "run_me.py"])
theproc.communicate()
@app.route('/')
def index():
return render_template('index.html')
@app.route('/generate')
def generate():
threading.Thread(target=lambda: run_script()).start()
return render_template('processing.html')
@app.route('/is_done')
def is_done():
hfile = "templates\\itworked.html"
if os.path.isfile(hfile):
return render_template('itworked.html')
else:
abort(404)
if __name__ == "__main__":
app.run()
processing.html:
<!DOCTYPE html>
<html>
<head>
<script src="/static/jquery.min.js"></script>
</head>
<body>
<p>Processing...</p>
<script>
setInterval(function()
{
var http = new XMLHttpRequest();
http.open('HEAD', "is_done", false);
http.send();
if (http.status==200)
window.location.replace("is_done");
},2000);
</script>
</body>
</html>
Оригинальный вопрос:
Я начинающий программист на Python и начинающий веб-разработчик, поэтому, пожалуйста, будьте осторожны. Что я хочу: Пользователь нажимает гиперссылку и переносится на промежуточную веб-страницу, которая говорит что-то вроде "Обработка...". В фоновом режиме (на сервере) эта ссылка запускает python script, который обрабатывает файл и создает новую веб-страницу. По завершении script пользователь перенаправляется на вновь созданную страницу. Что у меня есть: У меня есть script, который обрабатывает и выдает новую страницу. Я не понял, как запустить python script, а затем запустить перенаправление при завершении script. Я просмотрел веб-фреймворки, такие как django и cgi-скрипты. Но я не нашел ничего, что, по моему мнению, соответствовало бы счету. Это очень возможно, я просто пропустил что-то совершенно очевидное, поэтому я очень признателен за любую помощь. Спасибо.