我有一个相当标准的Python瓶api。几个api的端点共享实用程序功能。看起来效用函数不是并行调用的???
在下面的代码示例中,api有两个端点,foo和bar。我的理解是,如果同时调用foo和bar,则会创建两个单独的线程来处理它们。因此,util_func应该在这些线程的范围内执行。
我看到创建了两个单独的线程。但是util_func似乎被最后一个调用线程阻止了。例如,如果调用bar然后foo。 bar中的util_func被阻塞,直到foo中的util_func完成。然后吧中的util_func完成。
这是预期的行为???我的代码唯一的区别是util_func是一个单独的模块。
def util_func():
# do stuff
@app.route(/foo)
def foo():
util_func()
# do other stuff
@app.route(/bar)
def bar():
util_func()
# do other stuff
bottle.run(app=app,host='localhost', port=8888,server='cherrypy')
答案 0 :(得分:0)
您似乎遇到了GIL问题。
如果你我们要写
def util_func():
time.sleep(10) #10 long seconds...
您应该看到它们并行运行
如果您将提供有关util_func的更多详细信息,我会提供更多帮助