使用multiprocess-lib

时间:2017-01-03 12:36:12

标签: python uwsgi web.py multiprocess

它似乎有所不同。一个很慢,而且很快。 只是因为[导入演示]?为什么?

慢一点:

[demo_app.py]

import web
urls = ('/(.*)', 'demo.hello')
app = web.application(urls, globals())
application = app.wsgifunc()
if __name__ == "__main__":
    app.run()

[demo.py]

from multiprocessing import Manager
tmp  = Manager()
class hello:
def GET(self,name):
    return 'Hello world'

[与uwsgi一起运行]     uwsgi -d demo.log --http 127.0.0.1:8893 -w demo_app -p 1

[curl http://127.0.0.1:8893 /]非常慢

OK(快速):

[demo_app.py]

import web
import demo
urls = ('/(.*)', 'demo.hello')
app = web.application(urls, globals())
application = app.wsgifunc()
if __name__ == "__main__":
    app.run()

[demo.py]

from multiprocessing import Manager
tmp  = Manager()
class hello:
def GET(self,name):
    return 'Hello world'

[与uwsgi一起运行]     uwsgi -d demo.log --http 127.0.0.1:8893 -w demo_app -p 1

[curl很快

---------------------

在'慢'中,我strace(linux)子进程(uwsgi forked)。在uwsgi写完内容之后,它会epoll_wait 60s。 epoll_wait函数中的参数epoll_event为空。看下面的图片: strace log

1 个答案:

答案 0 :(得分:0)

使用快速版本,您可以在程序启动时导入演示(即在uwsgi启动期间)。因此,在HTTP请求期间没有额外的开销。

如果速度较慢,则会在第一个HTTP请求(即卷曲期间)导入演示。一旦加载,时间相同。