Ich habe eine ziemlich Standard Python Flasche API. Mehrere der api-Endpunkte teilen sich Utility-Funktionen. Es sieht so aus, als ob die Dienstprogrammfunktion nicht parallel aufgerufen wird ???Python Bottle Framework - Gemeinsame Funktion nicht parallel mit Endpunkten
Im folgenden Codebeispiel hat die API zwei Endpunkte, foo und bar. Mein Verständnis ist, dass, wenn foo und bar gleichzeitig aufgerufen wurden, zwei separate Threads erstellt werden, um sie zu verarbeiten. Daher sollte util_func im Bereich dieser Threads ausgeführt werden.
Ich sehe zwei separate Threads erstellt. Aber die util_func scheint durch den letzten Thread blockiert zu sein. Zum Beispiel, wenn genannt bar dann foo. util_func in bar wird blockiert, bis util_func in foo abgeschlossen ist. Dann wird util_func in der Leiste vervollständigt.
Ist das das erwartete Verhalten ??? Der einzige Unterschied in meinem Code ist, dass die util_func ein separates Modul ist.
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')
Ja bieten würde, das Verhalten wird erwartet, , vorausgesetzt, dass 'util_func' keine E/A-Aufrufe ausführt. Es kann immer nur ein Python-Thread ausgeführt werden. Siehe https://wiki.python.org/moin/GlobalInterpreterLock –