flask中的Python多处理

flask中的Python多处理,python,flask,parallel-processing,Python,Flask,Parallel Processing,这个问题可能已经被问到了,而且很可能已经得到了回答,但我不知道在这里哪里可以找到它 问题:我有一个用于python的flask的路由器,它需要一段时间来处理每次调用的数据。我需要使对路由的每个调用本身都是一个线程,这样它就不必等待加载请求。Flask带有内置的开发web服务器 要获得一些很酷的特性,如每个请求的单独进程和静态文件服务,您需要在Flask应用程序前面运行一个实际的web服务和一个WSGI服务 Flaskdocs提供。流行的Web服务器/WSGI组合是Apache/mod_WSGI和

这个问题可能已经被问到了,而且很可能已经得到了回答,但我不知道在这里哪里可以找到它


问题:我有一个用于python的flask的路由器,它需要一段时间来处理每次调用的数据。我需要使对路由的每个调用本身都是一个线程,这样它就不必等待加载请求。

Flask
带有内置的开发web服务器

要获得一些很酷的特性,如每个请求的单独进程和静态文件服务,您需要在
Flask
应用程序前面运行一个实际的web服务和一个WSGI服务


Flask
docs提供。流行的Web服务器/WSGI组合是Apache/mod_WSGI和Nginx/Gunicorn,但还有许多其他选项。

一个非常好的设置方法是使用“uwsgi”作为应用服务器(和协议),使用Nginx作为前端代理。这些都是超快速、可扩展、可处理的线程,是Flask推荐的方法之一。尽管flask文档提供了基本配置,但我使用了本指南,它提供了更深入的安装演练。他们正在使用Ubuntu,但只需对安装命令做一些小改动,就可以在大多数Linux版本上运行


正如其他人所提到的,有专门的工具可以做到这一点(似乎是最好的),但如果有人只是想快速设置和工作,下面是我的方法,它只使用Python的
多处理模块:

from flask import Flask
from multiprocessing import Process
import time

app = Flask(__name__)

def detachedProcessFunction(wait_time):
    i=0
    while i<wait_time:
        i = i+1
        print "loop running %d" % i
        time.sleep(1)

@app.route('/start')
def start():
    global p
    p = Process(target=detachedProcessFunction, args=(15))
    p.start()
    return render_template('layout.html')

if __name__ == '__main__':
    app.run(debug=True)
从烧瓶导入烧瓶
从多处理导入进程
导入时间
app=烧瓶(名称)
def detachedProcessFunction(等待时间):
i=0

而我想你想使用多线程为一个单一的请求?或者您希望每个请求都是一个单独的进程/线程?每个请求都应该是一个单独的线程。我将接受重定向到现有线程作为答案。使用此选项,flask应用程序似乎在15秒的超时期间仍然不可用@DankMasterDan@Uddhav您指的是什么超时时间?我没有看到烧瓶应用程序不可用的任何时间..它被阻塞了。该应用程序将不可用。