Кто-нибудь знает, есть ли ограничение на количество wmic
запросы, которые Windows может обрабатывать одновременно, если они исходят из службы Windows? Причина, по которой я спрашиваю, заключается в том, что мое приложение не работает, когда было инициировано слишком много одновременных запросов. Я не получаю никаких данных из приложения.
Однако, если я скомпилирую приложение Python и запущу его как отдельное приложение, все будет работать нормально.
Вызовы wmic выглядят так:
subprocess.Popen("wmic path Win32_PerfFormattedData_PerfOS_Memory get CommittedBytes", stdout=subprocess.PIPE, stderr=subprocess.PIPE)
Это заставляет меня задаться вопросом, есть ли ограничение для служб Windows и что они могут выполнять? Я имею в виду, если .exe
file может обрабатывать все запросы, тогда это должно быть связано с тем, что я скомпилировал его как службу Windows.
Update, я наконец нашел ответ на этот вопрос. Причина, по которой это происходит, заключается в том, что Windows не может писать в stdout/stderr
используя службу Windows, вы можете обойти эту проблему, используя временный файл.