В соответствии с вашим вопросом я понимаю, что у вас есть только один принтер для этикеток, и у вас есть несколько производителей, которые пытаются печатать на нем этикетки.
Так что даже если вы переключитесь на многопоточность, вам придется синхронизировать потоки, чтобы избежать взаимных блокировок и бесконечного ожидания,
Так что мой лучший вариант - использовать встроенную структуру данных python, которая называется очередь
в соответствии с документ
Модуль очереди реализует многопользовательские очереди с несколькими потребителями. Это особенно полезно в многопоточном программировании, когда необходимо безопасно обмениваться информацией между несколькими потоками. Класс Queue в этом модуле реализует всю необходимую семантику блокировки. Это зависит от доступности поддержки потоков в Python,
blockquote>Несмотря на то, что это многопользовательская, многопользовательская очередь, я предполагаю, что она все равно будет работать для вас как чудо.
Итак, вот что вам нужно сделать
- Ваш сервер получает запрос на печать этикетки,
- выполнить необходимую обработку / очистку и поместить он в очереди
- Рабочий поток извлекает элементы из очереди и выполняет задачу
или, если вы ожидаете, что система будет достаточно большой, вот несколько ссылок, но шаги будут такими же, как указано выше
RabbitMq - масштабируемый брокер сообщений (просто поставьте очередь)
[113 ] Celery - пакет Python для получения элементов из брокера сообщений, такого как rabbitmq, и запуска его
Для выключения его для единственной переменной использовать mark_safe
:
from django.utils.safestring import mark_safe
t = loader.get_template("sometemplate")
c = Context({
'foo': 'bar',
'url': mark_safe('http://127.0.0.1/test?a=1&b=2'),
})
print t.render(c)
С другой стороны, для общего выключения автовыхода из кода Python используйте autoescape
аргумент при инициализации a Context
:
c = Context({
'foo': 'bar',
'url': 'http://127.0.0.1/test?a=1&b=2',
}, autoescape=False)
Как повернуться [Автоматический выход HTML] от раздела документации покрывает некоторые опции в шаблоне, если Вы сделали бы это там.
Или просто используйте "безопасный" фильтр в своем шаблоне.
Кроме того, я не могу подчеркнуть достаточно, как важный это должно быть знакомо с документацией Django; много общих вопросов как это имеют легко находимые ответы и объяснения (как этот), и прочтение документов и получение ощущения того, как все работает, решительно уменьшит количество времени, которое необходимо провести, спрашивают, "почему оно делало это" и увеличивало количество времени, Вы тратите вещи здания, которые работают способ, которым Вы хотите.