Извините, если это не имеет смысла. Пожалуйста, прокомментируйте, если требуется уточнение.
Я пишу небольшое приложение для загрузки файлов в web.py, которое развертываю с помощью mod_wsgi + apache. У меня возникла проблема с управлением сеансом, и я хотел бы получить разъяснения о том, как работает многопоточность в web.py.
По сути, я вставляю код в скрытое поле HTML-страницы, которую я отображаю, когда кто-то получает доступ к моей странице. Загрузка файла затем выполняется с помощью стандартного запроса POST, содержащего как файл, так и код. Затем я извлекаю информацию о прогрессе файла, обновляя его в методе POST загрузки файла и перетаскивая его с помощью запроса GET в другой класс. «Сессия» (извинения за то, что она довольно наивна) хранится в объекте сеанса, например:
class session:
def __init__(self):
self.progress = 0
self.title = ""
self.finished = False
def advance(self):
self.progress = self.progress + 1
Все сеансы хранятся в глобальном словаре в сценарии моего приложения, а затем к ним обращается мой код (из более раннего) в качестве ключа.
По некоторым причинам мой прогресс, кажется, остается на 0 и никогда не увеличивается. Я отлаживал уже пару часов и обнаружил, что два объекта сеанса, на которые ссылаются класс загрузки и класс прогресса, не совпадают. Однако два кода, насколько я могу судить, одинаковы. Это сводит меня с ума, так как он работал без проблем на тестовом сервере web.py на моей локальной машине.
РЕДАКТИРОВАТЬ: После некоторых исследований кажется, что словарь может быть скопирован для каждого запроса. Я пытался поместить словарь в другой и импортировать, но это не работает. Есть ли какой-то другой способ, кроме использования базы данных для «разделения» словаря сессий?