繁体   English   中英

使用flask + uwsgi + nginx将flask部署到服务器时,多进程无法在flask中工作

[英]Multiprocess can not work in flask when I deploy flask to server by using flask + uwsgi + nginx

我正在使用 Flask + uwsgi + nginx 在服务器上部署网站。

在flask中,我的代码在下面,这里是我想要设计的:每次点击run model时,它会在另一个进程中运行一个模型,但界面会立即链接到等待界面。

train_dataset.status = status
db.session.commit()
text = 'Start training your models, please wait for a while or check results several hours later'

# would run a model in another process
task = Process(target=start_train, args=(app.config['UPLOAD_FOLDER'], current_user.id, p.id, p.task), name="training.exe")
task.start()
print(task.pid, task.name)
session[f"{project_name}_train"] = task.pid

# in the meanwhile, link to waiting interface
return render_template('p_computeview.html', project_name=project_name, text=text,
                               status=status, p=p, email=email, not_identify=not_identify)

当我在本地开发环境中测试时

app.run()

没关系,当我点击运行模型时,界面只是链接到等待界面,我可以看到模型运行日志。 但是当我部署到服务器时,我选择了uwsgi + nginx + flask。

在uwsgi.ini中,我已经指定了进程

processes=2
threads=5

但是当我点击运行模型时,界面还是,没有链接到等待界面,但是可以看到模型运行日志,建模完成后,界面会链接到等待界面(证明Process功能没有在职的 ??)

我的服务器有 2 个 CPU,所以我认为它可以支持多进程

有人能帮我吗 ? 我猜 uwsgi 或 nginx 有问题?

在请求上下文中运行单独的线程或进程是一种常见的愿望。 由于各种原因,除了在非常狭隘的情况下,这是一种导致挫折的愿望。 在这种情况下,一旦task超出范围, Process机制就会被拆除。

如果您想从请求处理程序启动一个长时间运行的任务,请使用像celeryRq这样的框架,它们可以安排在 http 服务器的进程外运行作业。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM