Найти - Пользователи
Полная версия: py2exe, убить процесс (откомпиленный)
Начало » Python для экспертов » py2exe, убить процесс (откомпиленный)
1 2
helm2004
Доброго времени суток!
Я использую bottle, вместо традиционного ГУИ интерфейса и перевожу всё это в py2exe.
Мне нужно, чтоб при выходе из браузера убивался процесс который вызывает екзешник py2exe ( он у меня называется first.exe)
Для этого использую вот такую ф-цию:
import win32api 
import win32pdhutil
import win32con
def killProcName(procname):
"""Kill a running process by name. Kills first process with the given name."""
try:
win32pdhutil.GetPerformanceAttributes("Process", "ID Process", procname)
except:
pass
pids = win32pdhutil.FindPerformanceAttributesByName(procname)
# If _my_ pid in there, remove it!
try:
pids.remove(win32api.GetCurrentProcessId())
except ValueError:
pass
handle = win32api.OpenProcess(win32con.PROCESS_TERMINATE, 0, pids[0])
win32api.TerminateProcess(handle, 0)
win32api.CloseHandle(handle)
print "Kill"
и в bottle:
@route('/onunload', method='POST')
def on_unload():
#sys.exit(-1)
kill_process.killProcName('first')
Когда просто запускаю файл то работает, а когда перевожу в exe - нет.
Как убить процесс который я запустил с помощью py2exe?
Буду рад всем пинкам в нужную сторону.
Спасибо!
Андрей Светлов
Какой-то жуткий способ…
helm2004
Андрей Светлов Согласен, подскажите красивый:)
Андрей Светлов
Жуть начинается с идеи запускать самый обычный браузер при старте вашего приложения (если я правильно понял).
Напишите простейшее UI для этих целей (webkit там или IE ActiveX встроить в окошко с рамкой). И, кажется, ничто не помешает поместить всё в один процесс.
igor.kaist
Архитектуру приложения можно пересмотреть. У вас же все на питоне написано. Зачем несколько exe'шников?
Вам web сервер ваш нужно убить или процесс, который запускается вместе с приложением? Может быть first вынести в отдельный поток а не в отдельный процесс, и уже управлять из основного кода как вздумается?
helm2004
igor.kaist пробовал прибить веб сервер тоже ничего не получилось
Андрей Светлов
Ой. У вас еще и полновесный веб-сервер стоит? Для десктопного приложения?
helm2004
Андрей Светлов нет, конечно. Запускаю стандартный ботловский
run(port=80)
Запускается wsgiref server, как его остановить из браузера?
Андрей Светлов
Еще раз. Почему не создать окошко с QWebView внутри (не любите Qt - есть много альтернатив), запустить в отдельном потоке wsgi server и наслаждаться жизнью?
Это типовое решение.
helm2004
Андрей Светлов я очень люблю Qt, но есть пару вопросов которые выходят из рамок данного топика, такие как работа с AJAX, jQuery(javascript).
И так, на будущие, можно, да и нужно обращаться ко мне на “Ты”.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB