Я использую бутылку с сервером cherrypy для использования многопоточности. Насколько я понимаю, каждый запрос обрабатывается другим потоком. Поэтому дается следующий код:Я не могу понять многопоточность с использованием черри/бутылки
from bottle import request, route
somedict = {}
@route("/read")
def read():
return somedict
@route("/write", method="POST")
def write():
somedict[request.forms.get("key")] = request.forms.get("value")
Возможно ли быть потокобезопасным? Что делать, если поток демона был запущен для управления somedict, скажем, что это словарь активных сеансов, а сеансы истекли ничейных нитей демона? Если бы не было достаточно простого мехинизма блокировки, и мне нужно было бы использовать его при чтении, записи и в потоке демона или просто в потоке демона?
Также, как я понимаю, черри - это настоящий многопоточный сервер. Есть ли более правильный метод, который я должен использовать для внедрения потока демона при использовании cherrypy, поскольку потоки pythons - это не настоящие потоки? Я не хочу сильно вникать в среду вишни, предпочитая придерживаться бутылки для этого проекта, поэтому, если это связано с отходом от бутылки/переносом моего приложения на вишневый, тогда на данный момент это не имеет никакого значения. Я все еще хотел бы знать, хотя, как я не видел много в их документации по темам вообще.
Так с помощью bultin нитей и CherryPy somedict может использоваться для безопасного обмена данными между запросами и даже демонами потоками? Это отвечает на мой вопрос, если это так, и делает это намного проще, но для меня это кажется волшебным.Как cherrypy может делиться dict в потоковом безопасном режиме в потоках, которые я порождаю в приложении, в то время как базовый python требует блокировки для такого поведения? Или, возможно, как ваше первое предложение подразумевает, что мое понимание поведения базового python просто неверно? – kryptobs2000
@ kryptobs2000 см. Мой обновленный ответ – korylprince