Django - Общение с постоянным процессом

У нас есть унаследованная библиотека C, которая может использоваться для связи с локальным сервером, и мы написали инструменты командной строки и графические интерфейсы с ее помощью. Теперь мы хотели бы создать веб-интерфейс с использованием этой библиотеки, чтобы пользователи могли использовать инструменты через веб-браузер, а не устанавливать их локально. У меня есть опыт работы с Django, и это кажется вполне правдоподобным.

Однако здесь есть одна большая загвоздка. Для того чтобы библиотека C могла взаимодействовать с локальным сервером, она должна открыть соединение для каждого пользователя перед передачей данных (и затем закрыть соединение, когда сессия закончится). А чтобы отслеживать эту сессию, она возвращает указатель void, который должен использоваться для всех вызовов библиотеки, использующих это соединение. А поскольку это указатель на пустоту в C, то это указатель на конкретную область памяти в процессе, и сессия может быть использована только в том процессе, в котором она была создана. Это вызывает проблемы с Django, потому что (насколько я знаю) я не могу гарантировать, что каждый запрос в различных представлениях Django к сессии будет обработан в рамках одного процесса.

Одним из потенциальных методов решения этой проблемы было бы открытие соединения из библиотеки всякий раз, когда представлению нужно связаться с локальным сервером, передача данных, а затем закрытие соединения перед выходом из представления. Но это заставило бы сервер Django открывать и закрывать соединения с локальным сервером с высокой частотой, а администраторы не одобряют этого.

Есть ли какой-нибудь удобный метод или библиотека для создания потенциально неограниченного числа постоянных процессов, которые могут взаимодействовать с Django? Я бы запускал новый процесс каждый раз, когда пользователь начинает новую сессию, требующую данных от сервера, взаимодействовал с ним из Django, а затем убивал процесс после ухода пользователя.

Я рассматривал Celery, но он создает ограниченное количество процессов для обработки задач и (насколько я могу судить) не гарантирует, что один и тот же рабочий процесс будет обрабатывать различные запросы задач от одного и того же пользователя. Но идеальным для меня было бы что-то вроде Celery, где я мог бы запускать новый рабочий процесс, когда захочу, отправлять данные назад и для конкретного рабочего из Django, а затем убивать рабочего, когда он больше не нужен.

Возможно ли что-нибудь подобное?

Вернуться на верх