2014-01-10 17 views
0

Я пытаюсь настроить глобальные переменные, которые будут доступны любому из потоков в Django. Я знаю, что есть бесконечные сообщения о stackoverflow об этом, и все говорят, что не делайте этого. Я пишу веб-приложение, которое обрабатывает некоторые файлы, используя модуль Python Acora. Модуль Acora создает дерево сортировок на основе некоторых входных данных (строк). Процесс построения дерева занимает некоторое время, поэтому я хотел бы построить структуру Acora при запуске приложения, так что когда файлы будут отправлены для обработки, структуры Acora будут готовы к работе. Это будет сбривать 30 секунд с каждого файла, который будет обработан, если я смогу отключить это.Глобальные глобальные переменные Django

Я пробовал несколько методов, но для каждого запроса данные недоступны, и я думаю, что это потому, что каждый запрос обрабатывается в отдельном потоке, поэтому мне нужен перекрестный поток или решение для общей памяти, или я должны найти что-то другое, чем Акора. Кроме того, Acora не может быть маринован или сериализован, поскольку он является модулем C и не раскрывает его данные на Python. Я пробовал кешинг Django и cPickle, без везения, потому что они используют Pickle. Мысли?

ответ

0

Вытащите задачу Acora из Django целиком. Используйте Twisted или некоторые другие рамки событий для создания службы, с которой Django может разговаривать либо напрямую, либо через очередь сообщений, такую ​​как Celery, всякий раз, когда у нее есть файлы, которые нуждаются в обработке.

Смежные вопросы