Я пытаюсь создать эту привязку Python к создаваемому мною приложению Electronjs, где часть Python используется для анализа данных, а результат (словарь Python) передается в веб-браузер для визуализации. Все это работало как прелесть для небольшого количества данных, но когда я попытался передать большой словарь результатов (~ 200 МБ), окно было создано, но закрыто без предупреждения в терминале (я не смог проверить devtool), хотя похоже, что подпроцесс продолжает работать на сервере. Эта проблема возникла как на компьютерах с Windows, так и на компьютерах с Ubuntu, и я очень признателен за вашу помощь.
вот мой код:
def view(data):
config = data
settings = {
"debug": True,
"log_severity": cef.LOGSEVERITY_INFO,
"log_file": "debug.log",
}
cef.Initialize(settings=settings)
browser_setting = { "file_access_from_file_urls_allowed":True,\
"universal_access_from_file_urls_allowed": True,\
"web_security_disabled":True}
browser = cef.CreateBrowserSync(url='file://' + os.path.realpath("index_cefpython.html"),
window_title="Javascript Bindings", settings = browser_setting)
browser.SetClientHandler(LoadHandler(config))
bindings = cef.JavascriptBindings()
browser.SetJavascriptBindings(bindings)
cef.MessageLoop()
del browser
cef.Shutdown()
return
class LoadHandler(object):
def __init__(self, config):
self.config = config
def OnLoadEnd(self, browser, **_):
browser.ExecuteFunction("defineData", self.config)
на стороне JS, у меня есть:
<script type="text/javascript">
function defineData(datainput){
console.log("start")
data = datainput;
Main();
}
</script>
и вот все сообщения, распечатанные в терминале:
[0312 / 104311.439: INFO: cefpython_app.cpp (199)] [Процесс браузера] OnBeforeChildProcessLaunch () командная строка: "<> \ Anaconda3 \ lib \ site-packages \ cefpython3 \ subprocess" --type = gpu-process --no-sandbox --locales-dir-path = "<> \ Anaconda3 \ lib \ site-packages \ cefpython3 \ locales" --log-file = debug.log --log-severity = информация --resources-dir -path = "<> \ Anaconda3 \ lib \ site-packages \ cefpython3" --lang = en-US --disable-gpu-shader-disk-cache / prefetch: 2
[0312 / 104311.440: INFO: cef_log.cpp (8)] [Процесс браузера] Переключатель уже установлен, игнорируя: disable-gpu-shader-disk-cache
[0312 / 104311.440: INFO: cefpython_app.cpp (199)] [Процесс браузера] OnBeforeChildProcessLaunch () командная строка: "<> \ Anaconda3 \ lib \ site-packages \ cefpython3 \ subprocess" --type = gpu-process --no-sandbox --locales-dir-path = "C: \ Users \ Xiangyun \ Anaconda3 \ lib \ site-packages \ cefpython3 \ locales" --log-file = debug.log --log-severity = info - -ресурсы-Dir-путь =»<> \ Anaconda3 \ Lib \ сайт-пакеты \ cefpython3" --lang = EN-US повреждает-ГП-шейдер-кэширование диска --gpu-предпочтение = KAAAAAAAAACAA4CAAQAAAAAAAAAAAGAAEAAAAAAAAAAAAAAAAAAAACgAAAAEAAAAIAAAAAAAAAAoAAAAAAAAADAAAAAAAAAAOAAAAAAAAAAQAAAAAAAAAAAAAAAKAAAAEAAAAAAAAAAAAAAACwAAABAAAAAAAAAAAQAAAAoAAAAQAAAAAAAAAAEAAAALAAAA --locales- dir-path = "<> \ Anaconda3 \ lib \ site-packages \ cefpython3 \ locales" --log-file = debug.log --log-severity = info --resources-dir-path = "<> \ Anaconda3 \ lib \ site-packages \ cefpython3 "--lang = en-US / prefetch: 2
[0312 / 104311.473: INFO: cef_log.cpp (8)] [Процесс браузера] CreateBrowserSync () с именем
DevTools прослушивает ws: //127.0.0.1: 59232 / devtools / browser / abaff316-3b5c-4647-8af3-c7c521146d08
[0312 / 104311.473: INFO: cef_log.cpp (8)] [Процесс браузера] navigateUrl: file: ///// <> /index_cefpython.html
[0312 / 104311.475: INFO: cef_log.cpp (8)] [Процесс браузера] CefBrowser :: CreateBrowserSync ()
[0312 / 104311.493: INFO: cef_log.cpp (8)] [Процесс браузера] GetPyBrowser (): создать новый PyBrowser, browserId = 1
[0312 / 104311.516: INFO: cefpython_app.cpp (199)] [Процесс браузера] OnBeforeChildProcessLaunch () командная строка: "<> \ Anaconda3 \ lib \ site-packages \ cefpython3 \ subprocess" --type = renderer - no-sandbox --service-pipe-token = C31AF08C64F1883299C21D068EF5263C --lang = en-US --locales-dir-path = <> \ Anaconda3 \ lib \ site-packages \ cefpython3 \ locales "--log-file = debug. log --log-severity = info --resources-dir-path = "<> \ Anaconda3 \ lib \ site-packages \ cefpython3" --disable-gpu-shader-disk-cache / prefetch: 1
[0312 / 104311.528: INFO: cef_log.cpp (8)] [Процесс браузера] GetPyFrame (): базовый фрейм еще не существует: browserId = 1, frameId = -4
[0312 / 104311.529: INFO: cef_log.cpp (8)] [Процесс браузера] GetPyFrame (): базовый фрейм еще не существует: browserId = 1, frameId = -4
[0312 / 104311.531: INFO: cef_log.cpp (8)] [Процесс браузера] CefBrowser :: CreateBrowserSync () завершился успешно
[0312 / 104311.532: INFO: cef_log.cpp (8)] [Процесс браузера] Дескриптор окна CefBrowser = 595526
[0312 / 104311.533: INFO: cef_log.cpp (8)] [Процесс браузера] GetPyFrame (): базовый фрейм еще не существует: browserId = 1, frameId = -4
[0312 / 104311.534: INFO: cef_log.cpp (8)] [Процесс браузера] SendProcessMessage (): message = DoJavascriptBindings, размер аргументов = 1
[0312 / 104311.534: INFO: cef_log.cpp (8)] [Процесс браузера] MessageLoop ()
[0312 / 104311.612: INFO: client_handler.cpp (40)] [Процесс браузера] OnProcessMessageReceived (): OnContextCreated
[0312 / 104311.613: INFO: cef_log.cpp (8)] [Процесс браузера] V8ContextHandler_OnContextCreated ()
[0312 / 104311.614: INFO: cef_log.cpp (8)] [Процесс браузера] GetPyFrame (): создать новый PyFrame, frameId = 2