网站备案时网站没有内容可以/西安网络推广公司

网站备案时网站没有内容可以,西安网络推广公司,乐清虹桥门户网,阿里巴巴网页版登录入口前言 尝试使用tauri2DjangoReact的项目-CSDN博客https://blog.csdn.net/qq_63401240/article/details/146403103在前面笔者不知道怎么做,搞了半天 笔者看到官网,原来可以使用二进制文件,好好好 嵌入外部二进制文件 | Taurihttps://v2.taur…

前言

尝试使用tauri2+Django+React的项目-CSDN博客https://blog.csdn.net/qq_63401240/article/details/146403103在前面笔者不知道怎么做,搞了半天

笔者看到官网,原来可以使用二进制文件,好好好

嵌入外部二进制文件 | Taurihttps://v2.tauri.app/zh-cn/develop/sidecar/

准备

根据官网,进入如下配置

1、在src-tauri目录下新建bin或者binaries

2、将manage.exe(Django打包文件)放入bin目录下,并且按照操作系统改名,笔者改的名

manage-x86_64-pc-windows-msvc。

3、在配置文件tauri.config.json中,在bundle添加值binaries/manage

  "bundle": {"active": true,"targets": "all","externalBin": ["binaries/manage"],"icon": ["icons/32x32.png","icons/128x128.png","icons/128x128@2x.png","icons/icon.icns","icons/icon.ico"]}

4、配置许可

{...."shell:allow-execute","shell:allow-kill",}

正文

1、运行时,打开exe

2、关闭时,断开exe

思考

如何在运行项目时,打开exe?

这需要用到tauri的一个结构体Builder,,其中有个方法setup,项目运行时,就会运行其中的代码

Builder in tauri - Rusthttps://docs.rs/tauri/2.4.0/tauri/struct.Builder.html#method.setup

如何关闭项目时,关闭exe

使用build中的窗口事件on_window_event。

Builder in tauri - Rusthttps://docs.rs/tauri/2.4.0/tauri/struct.Builder.html#method.on_window_event

关键代码如下

use std::sync::{Arc, Mutex};.........
..........setup(|app| {let sidecar_child = Arc::new(Mutex::new(None)); // 用于存储 CommandChild 对象app.manage(sidecar_child.clone()); // 将 sidecar_child 存储在全局状态中let app_handle = app.handle().clone();let sidecar_command = app_handle.shell().sidecar("manage").unwrap().args(["runserver", "--noreload"]);// 启动命令// 检查是否已经启动了子进程if sidecar_child.lock().unwrap().is_none() {match sidecar_command.spawn() {// 启动exeOk((mut rx, mut child)) => {*sidecar_child.lock().unwrap() = Some(child); // 存储子进程Ok(())}Err(e) => {eprintln!("Failed to spawn sidecar: {}", e);Err(Box::new(e))}}} else {Ok(())}})
use tauri::WindowEvent;
.....
.... .on_window_event(|window, event| {if let WindowEvent::CloseRequested { api, .. } = event {// 获取 Sidecar 进程句柄let sidecar_child = window.state::<Arc<Mutex<Option<CommandChild>>>>();if let Some(mut child) = sidecar_child.lock().unwrap().take() {let _ = child.kill(); // 关闭进程println!("Sidecar process stopped on window close.");}}})

打包后,打开任务管理器

运行的发现——第一点

打开debug文件,

可以发现其中有manage.exe,如果把它删除,运行会报错。

看来上篇文章中,把manage.exe文件放到debug中,没有问题。

运行的发现——第二点

打开任务管理器,有一个进程,但是为什么会有两个,这两个都是进程,都有PID

这其实笔者感到疑惑

 

关闭运行

为什么只关掉了一个进程

对于这个问题,笔者打开了bin目录下exe,在powershell中单独打开manage.exe文件

./manage-x86_64-pc-windows-msvc.exe runserver --noreload

 查看进程

居然会有两个?,原来本就有两个,以前还没发现

如果关闭powershell

发现两个都关闭了。?????????

难道是manage.exe的问题,打包有问题吗?

笔者打开没有打包之前的后端,运行Django

python manage.py runserver 

在任务管理器中,原来有4个python 

关闭之后,都关闭了。笔者问了问deepseek

当你运行 python manage.py runserver 时,任务管理器显示有多个 Python 进程是正常现象。这是因为 Django 的开发服务器(runserver)会启动多个线程或子进程来处理请求和后台任务。

 当使用 -F 参数(打包为单个 EXE 文件)时,PyInstaller 会将程序解压缩到一个临时目录并运行。第二个进程是实际的程序,而第一个进程是用于在程序退出或崩溃后清理临时目录的守护进程

原来如此。manage.exe会打开两个进程而kill方法只关闭了一个进程

笔者搜了搜,原来是打包的原因,哈哈哈哈哈

python打包的exe运行后有两个进程_mob649e81540090的技术博客_51CTO博客https://blog.51cto.com/u_16175432/8031448Two process instance when i run "exe" which is generated by pyinstaller? · Issue #2483 · pyinstaller/pyinstallerhttps://github.com/pyinstaller/pyinstaller/issues/2483

解决这个问题

1、不打包成单个文件

打包成多个文件

pyinstaller manage.exe

 结果如下

 准备

(1)将_internal放到src-tauri目录下

(2)manage.exe放到bin目录下,并改名

(3)修改配置文件tauri.config.json的bundle

 "bundle": {"active": true,"targets": "all","externalBin": ["binaries/manage"],"resources":["_internal"],"icon": ["icons/32x32.png","icons/128x128.png","icons/128x128@2x.png","icons/icon.icns","icons/icon.ico"]}

运行。

成功,完美,哈哈哈哈哈

2、继续使用单个文件

笔者多次尝试,发现对于打包成单个文件manage.exe的运行过程

首先,没有出现Django的文字的时候,只有一个进程

然后,当下面出现文字,就变成两个

当终结先出现的manage.exe,剩下一个运行,

访问127.0.0.1:8000,是成功的

当终结后出现的manage.exe,全部都关闭

因此,笔者有这个想法,如果在Tauri想办法关闭后面出现的线程,就可以完全关闭。

理论上,笔者觉得没有问题。

为什么不全部关了,哈哈哈哈哈

打包

Tauri打包

运行打包命令

pnpm run tauri:build

安装后,目录如下

可以运行。ok

终于完成了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/74169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql配套测试之查询篇

&#x1f3dd;️专栏&#xff1a;Mysql_猫咪-9527的博客-CSDN博客 &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 条件查询简单测试&#xff1a; 1.查询英语成绩不及格的同学(<60) 2…

PicFlow:一个图片处理与上传工作流工具(图床上传工具)

自从学习搭建网站以来&#xff0c;我就把很多图片托管在七牛云等图床平台上。以前总是通过网页批量上传&#xff0c;需要登录并一步步跳转网页操作&#xff0c;久而久之就厌烦了&#xff0c;于是花了一天时间用 Python 写了一个工具 —— PicFlow&#xff0c;从名字可以看出&am…

Web纯前端实现在线打开编辑保存PPT幻灯片

很多项目中有时会需要在线打开PPT并编辑保存到服务器。猿大师办公助手可以完美调用本地office在线打开ppt文件&#xff0c;跟本地打开效果一样。还可以在线打开word、excel、pdf等文件&#xff0c;支持本机OFFICE完整嵌入模式&#xff0c;本机OFFICE所有功能基本都可以在网页上…

NR SRS Configuration

文章目录 Frequency PositioningFull-Bandwidth ConfigurationFrequency-Hopping ConfigurationMulti-User ConfigurationsTime-Domain Orthogonal SRSCyclic-Shift Orthogonal SRS Summary and Further ExplorationReferences 此示例展示了如何生成探测参考信号&#xff08;SR…

【行测】言语理解与表达:选词填空

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;读不在三更五鼓&#xff0c;功只怕一曝十寒。 > 目标&#xff1a;掌握选词填空的基本题型&#xff0c;并能运用到例题中。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! …

[项目]基于FreeRTOS的STM32四轴飞行器: 十.检测遥控器

基于FreeRTOS的STM32四轴飞行器: 十.检测遥控器 一.检测遥控器连接逻辑二.遥控器的解锁情况三.遥控器控制飞机运转 一.检测遥控器连接逻辑 判断是否进入定高模式&#xff1a; 根据返回值判断遥控器的连接情况&#xff1a; 实现检测函数&#xff1a; 因为该函数在通信任务中…

Torch.expand等效矩阵相乘

文章目录 1. description2. pytorch 1. description torch.expand:主要作用是将向量按照指定维度进行复制&#xff0c;expand 可以用全一向量和给定向量以矩阵相乘的方式等效表示n_expand4 2. pytorch torch import torch import torch.nn as nntorch.set_printoptions(pr…

尝试在软考65天前开始成为软件设计师-计算机网络

OSI/RM 七层模型 层次名功能主要协议7应用层实现具体应用功能 FTP(文件传输)、HTTP、Telnet、 POP3(邮件)SMTP(邮件) ------- DHCP、TFTP(小文件)、 SNMP、 DNS(域名) 6表示层数据格式,加密,压缩.....5会话层建立,管理&终止对话4传输层端到端连接TCP,UDP3网络层分组传输&a…

Java 双端队列实战 实现滑动窗口 用LinkedList的基类双端队列Deque实现 洛谷[P1886]

集合 关系 介绍 Deque 是一个接口 LinkedList 是这个接口的实现类 题目 输入输出 滑动窗口 基于双端队列实现 Deque<Integer> deque new LinkedList<>(); 滑动窗口代码 洛谷 public static List<Integer> maxSlidingWindow(int[] nums, int k) {List&l…

Qemu-STM32(十):STM32F103开篇

简介 本系列博客主要描述了STM32F103的qemu模拟器实现&#xff0c;进行该项目的原因有两点: 作者在高铁上&#xff0c;想在STM32F103上验证一个软件框架时&#xff0c;如果此时掏出开发板&#xff0c;然后接一堆的线&#xff0c;旁边的人估计会投来异样的目光&#xff0c;特别…

QT开发(6)--信号和槽

这里写目录标题 1. 信号和槽概述信号的本质槽的本质 2. 信号和槽的使用2.1 连接信号和槽2.2 文档查询 3.自定义信号和槽3.1 自定义槽3.2 自定义信号3.3 带参数的信号和槽 4. 信号和槽的断开 1. 信号和槽概述 在Qt中&#xff0c;⽤⼾和控件的每次交互过程称为⼀个事件。⽐如&quo…

【前端】Canvas画布实现在线的唇膏换色功能

【前端】Canvas画布实现在线的唇膏换色功能 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 【前端】Canvas画布实现在线的唇膏换色功能背景概述以下是我们的实现方法!第一步 — 找…

异步编程与流水线架构:从理论到高并发

目录 一、异步编程核心机制解析 1.1 同步与异步的本质区别 1.1.1 控制流模型 1.1.2 资源利用对比 1.2 阻塞与非阻塞的技术实现 1.2.1 阻塞I/O模型 1.2.2 非阻塞I/O模型 1.3 异步编程关键技术 1.3.1 事件循环机制 1.3.2 Future/Promise模式 1.3.3 协程&#xff08;Cor…

QT网页显示的几种方法及对比

一.直接跳转打开网页 1.使用QDesktopServices::openUrl调用系统浏览器 原理&#xff1a;直接调用操作系统默认浏览器打开指定URL&#xff0c;不在应用程序内嵌入网页。 优点&#xff1a; 实现简单&#xff0c;无需额外模块或依赖。 适用于仅需跳转外部浏览器的场景。 缺点&…

【赵渝强老师】在Docker中运行达梦数据库

Docker是一个客户端服务器&#xff08;Client-Server&#xff09;架构。Docker客户端和Docker守护进程交流&#xff0c;而Docker的守护进程是运作Docker的核心&#xff0c;起着非常重要的作用&#xff08;如构建、运行和分发Docker容器等&#xff09;。达梦官方提供了DM 8在Doc…

python转换wav到mp3

尺寸好大&#xff0c;8G多&#xff0c;但是&#xff0c;领动的车机不识别.wav格式的音乐。 用python转换一下。 import os from pydub import AudioSegment filesos.listdir(E:\\dy2023) for f in files:if f.endswith(.wav):try:wavAudioSegment.from_wav(E:\\dy2023\\%s % f…

创建自己的github.io

1、创建GitHub账号 GitHub地址&#xff1a;https://github.com/ 点击Sign up创建账号 如果已创建&#xff0c;点击Sign in登录 2、创建仓库 假设Owner为username&#xff0c;则Repository name为username.github.io说明&#xff1a; 1、Owner为用户名 2、Repository name为仓…

Linux系统docker部署Ollama本地大模型及部署Hugging Face开源模型,ollama相关注意点,非ollama模型创建,模型量化,显存建议

本文主要描述在Linux系统使用docker部署ollama自有模型以及Hugging Face开源模型&#xff0c;也涉及到一些相关注意点&#xff0c;欢迎沟通讨论~ 拉取镜像 拉取ollama最新镜像&#xff1a;docker pull ollama/ollama:latest 运行ollama 执行&#xff1a;docker run -d --res…

在 Elasticsearch 中扩展后期交互模型 - 第 2 部分 - 8.18

作者&#xff1a;来自 Elastic Peter Straer 及 Benjamin Trent 本文探讨了如何优化后期交互向量&#xff0c;以适应大规模生产工作负载&#xff0c;例如减少磁盘空间占用和提高计算效率。 在之前关于 ColPali 的博客中&#xff0c;我们探讨了如何使用 Elasticsearch 创建视觉搜…

深入理解 JavaScript/TypeScript 中的假值(Falsy Values)与逻辑判断 ✨

&#x1f579;️ 深入理解 JavaScript/TypeScript 中的假值&#xff08;Falsy Values&#xff09;与逻辑判断 在 JavaScript/TypeScript 开发中&#xff0c;if (!value) 是最常见的条件判断之一。它看似简单&#xff0c;却隐藏着语言的核心设计逻辑&#xff0c;也是许多开发者…