Джанго с фастчжи и нитками - PullRequest
1 голос
/ 19 февраля 2010

У меня есть приложение Django, которое порождает поток для связи с другим сервером, используя Pyro.

К сожалению, похоже, что в fastcgi несколько версий этого потока запускаются, и словарь долженбыть глобально постоянным в моей программе, не так ли?(Иногда он имеет значения, которые я ожидаю, иногда нет)

Как лучше всего обеспечить, чтобы в приложении django / fastcgi была одна и только одна копия словаря?

1 Ответ

4 голосов
/ 19 февраля 2010

Я настоятельно рекомендую не полагаться на глобальное что-либо в django.Проблема в том, что, как вы, похоже, и сталкиваетесь, тип развертывания будет определять, как (или нет) это глобальное состояние является общим.Быть нацистом стиля - это совершенно другой уровень абстракции по сравнению с кодом, который полагается на некоторую гарантию согласованного глобального состояния.

У меня нет опыта работы с fastcgi, но я понимаю, что он, какмногие другие фреймворки, имеют предварительно разветвленный и многопоточный режим.В предварительно разветвленном режиме у вас есть отдельные процессы, а не потоки, выполняющие ваш код Python.Это означает кошмар для общего глобального состояния.

Запрет некоторого хрупкого обходного пути, который должен быть возможен и который кто-то может или не может предложить, единственное упорство, на которое вы действительно можете положиться, находится в базе данных, и, кв меньшей степени, какой бы механизм кэширования вы ни выбрали.Вы можете использовать API низкого уровня для кэширования и извлечения ключей и значений.

...