Мы разрабатываем небольшое серверное приложение c. Серверное приложение выполняет некоторую обработку данных и отвечает клиенту. Чтобы часть обработки данных оставалась настраиваемой и гибкой, мы решили использовать сценарии и, исходя из доступности различных готовых модулей, решили перейти на Python. Мы используем API Python-C для отправки / получения данных между c и python.
Алгоритм работает примерно так: -
Проблема Проблема, с которой мы сталкиваемся, возникает в случае одновременных запросов, поступающих от разных клиентов.Когда от разных клиентов поступает несколько запросов, мы склонны создавать исключения из счетчика ссылок на объекты. Обратите внимание, что для каждого запроса, поступающего от пользователя, мы создаем независимый словарь только для этого пользователя. Чтобы решить эту проблему, мы включили вызов PyRun_SimpleString (); внутри PyEval_AcquireLock (); и PyEval_ReleaseLock ();, но это привело к тому, что выполнение скрипта стало блокирующим вызовом. Поэтому, если выполнение сценария занимает много времени, все остальные пользователи также ждут ответа.
Не могли бы вы предложить наилучший из возможных подходов или указать, в чем мы ошибаемся. Пожалуйста, свяжитесь со мной для получения дополнительной информации.
Мы будем благодарны за любую помощь / руководство.