Python Bottle框架 - 共享功能不与端点并行运行

时间:2016-03-22 21:33:39

标签: python bottle

我有一个相当标准的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')

1 个答案:

答案 0 :(得分:0)

您似乎遇到了GIL问题。

如果你我们要写

def util_func(): 
    time.sleep(10) #10 long seconds...

您应该看到它们并行运行

如果您将提供有关util_func的更多详细信息,我会提供更多帮助