python - 当我使用烧瓶 + uwsgi + nginx 将烧瓶部署到服务器时,多进程无法在烧瓶中工作
问题描述
我正在使用flask + uwsgi + nginx 在服务器上部署网站。
在flask中,我的代码如下,这是我想要设计的:每次点击运行模型时,它会在另一个进程中运行一个模型,但界面会立即链接到等待界面。
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
但是当我点击运行模型的时候,界面还是静止的,并没有链接到等待界面,但是我可以看到模型运行日志,并且建模完成后,界面会链接到等待界面(证明过程功能没有在职的 ??)
我的服务器有 2 个 cpu,所以我认为它可以支持多进程
有人能帮我吗 ?我猜 uwsgi 或 nginx 有一些问题?
解决方案
推荐阅读
- jquery - 在这种情况下,哪种方法更合适?
- kubernetes - 无法通过 kubectl 从其他主机管理 kubernetes
- python - Jinja 包含“忽略缺失”失败并出现 UndefinedError
- microservices - 如何在 Cro 中插入一些路由检查中间件?
- apache-pig - 猪拉丁语:如何尝试捕捉有关铸造的错误?
- typescript - nestjs 中的 factory-girl 库
- c++ - 如何在内核模式下读取特定内核的程序计数器/指令指针?
- laravel - 在单个事务中访问中间件中的表名
- docker - 在 Docker 容器中将文件夹从一个目录复制到另一个目录
- awk - awk比较2个文件并匹配2列,得到第3列之间的百分比差异