我有一个django应用程序,我想迁移到dotcloud。 Django内部和我的应用程序中的许多操作都不是异步的,即它们会阻塞线程直到完成。 当我使用Apache时,由于在每个请求上打开了不同的线程,因此不会出现问题。但是在dotcloud使用的nginx / uwsgi中似乎并非如此。 看起来,uwsgi有一个--enable-threads和--threads选项,可以用于多线程,但是:
答案 0 :(得分:1)
您可以使用Gunicorn运行Django。反过来,Gunicorn支持多个worker classes,并且人们报告成功运行gunicorn + gevents + django [1] [2]。
要在dotCloud上使用它,您可能必须使用dotCloud的自定义服务。如果那是你想要尝试的东西,我个人会从dotCloud的reimplementation of python service using the custom service开始,并将uwsgi替换为gunicorn。
答案 1 :(得分:1)
我来这里寻找一些线索,我找到了,谢谢! 尽管如此,还是有相当数量的腿部工作来实际开始工作。
这是github上的一个示例应用程序,它在dotcloud上使用gunicorn,gevent和socketio:
答案 2 :(得分:-1)
线程是python中的一个问题 - GIL不允许它们同时运行。 所以多处理就是一个答案。
或者你可以看看gevent。实际上gevent是一种hack(python堆栈的猴子修补)等等,但它允许启动绿色线程。 我不确定gevent是否可以与django结合使用,但谷歌知道;)