小编Rbo*_*ery的帖子

使用python的Multiprocessing使得响应挂在gunicorn上

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

-route命中-form被提交到命中路由并触发要创建的multiprocessing.Process(),其中完成的工作是休眠30秒 - 路由似乎完成,作为多处理调用后的打印语句是然而,浏览器保持连接打开,并且在完成睡眠30秒之前不会"完成加载"(显示页面)

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

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

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)
Run Code Online (Sandbox Code Playgroud)

经过长期研究和稀疏的谷歌搜索结果这个问题后,我还没有找到任何结论.我将尝试另一个负载均衡器来检查问题是仅仅是枪炮.

python multiprocessing flask gunicorn

7
推荐指数
1
解决办法
3594
查看次数

SQLAlchemy - 批量插入忽略重复/唯一

使用 Sqlalchemy 对于大型数据集,我想使用 session.add_all() 和 session.commit() 等高效方法插入所有行。我正在寻找一种方法来忽略插入任何引发重复/唯一键错误的行。问题是这些错误仅在 session.commit() 调用时出现,因此无法使该特定行失败并移至下一行。

我见过的最接近的问题在这里:SQLAlchemy -批量插入忽略:“重复条目”;然而,接受的答案建议不要使用批量方法并在每行插入后提交,这非常慢并且会导致大量的 I/O,所以我正在寻找更好的解决方案。

python sqlalchemy

5
推荐指数
1
解决办法
4281
查看次数

标签 统计

python ×2

flask ×1

gunicorn ×1

multiprocessing ×1

sqlalchemy ×1