python - 使用 python 的 Multiprocessing 使响应卡在 gunicorn 上

标签 python flask multiprocessing gunicorn

首先,我承认该标题中有几个或多个关键字,但我确实确实在尝试以正确的方式捕捉问题。这里的问题是,我似乎无法使用 python 多处理模块正确创建子进程,而不会导致网页响应挂起。我已经尝试了几个最新版本的 gunicorn,但问题仍然存在。有趣的是,这个问题从来都不是 ubuntu 服务器上的问题,但是现在将应用程序移动到 rhel6.5 这个问题本身就出现了。这是工作流程:

-路线被击中 -提交的表单会命中路由并触发创建 multiprocessing.Process() ,完成的工作是休眠 30 秒 -路由似乎已完成,作为打印多处理调用后的打印语句,但是浏览器保持连接打开并且在 30 秒 sleep 结束之前不会“完成加载”(显示页面)

请注意,表单提交不是此问题的一部分,它只是帮助查看问题的发生。

这是产生问题的一个非常简单的路由和函数:

def multi():
    print 'begin multi'
    time.sleep(30)
    print 'end multi'

@app.route('/multiprocesstest', methods=['GET','POST'])
def multiprocesstest():

    syntaxForm = forms.mainSyntaxForm()

    if syntaxForm.validate_on_submit():
        print 'before multi call'
        th = multiprocessing.Process(target=multi)
        th.start()
        print 'after multi call'
        return redirect('multiprocesstest')

    return render_template('syntax_main.html', form=syntaxForm)

在对这个问题进行了广泛的研究和稀疏的谷歌搜索结果之后,我还没有找到任何结论。我将尝试使用另一个负载均衡器来检查问题是否仅出在 gunicorn 上。

最佳答案

multiprocessing 替换为 multiprocessing.dummy 可能会解决问题,因为 gunicornmultiprocessing 都是多处理模块,并且当您尝试在单个进程中调用多个进程时,它可能会导致麻烦。

关于python - 使用 python 的 Multiprocessing 使响应卡在 gunicorn 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29175090/

相关文章:

python - 如何在Python(最好)的pdf模板中插入二维码和一些文本来生成门票

python - 如何在预期中看到输出?

python - Flask SQLAlchemy 连接到 MySQL 数据库

python - 多处理:如何将数据从父进程发送到持续运行的子进程?

python-2.7 - 我应该并行运行多少个进程?

python - Django 设置未注册更改

python - AsyncIO 这个任务什么时候发生第二次await?

python - 使用 header 中的 token 登录后 Flask 重定向

python - Flask-Login @login-required 装饰器在 session 过期后不会重定向到登录页面

python 多处理池.starmap 不起作用