python-eel/Eel

Is it possible to start a thread this way?

Open

#584 创建于 2022年4月15日

在 GitHub 查看
 (0 评论) (0 反应) (0 负责人)Python (570 fork)batch import
help wanted

仓库指标

Star
 (5,980 star)
PR 合并指标
 (30 天内没有已合并 PR)

描述

Hello. I have a simple task. I want to upload a file using sftp and display the upload progress. Would this approach be correct?

My JS:

<html>
	<head>
		<script type="text/javascript" src="/eel.js"></script>
		<script type="text/javascript">
	
			eel.expose(set_progress);
			function set_progress(p) {
				document.getElementById("progress").textContent = p;
			}
			
		</script>
	</head>
	<body>
		<span id="progress"></span>
	</body>
</html>

...and Python:

import os
import eel
from paramiko import SSHClient, AutoAddPolicy
import threading

eel.init(os.getcwd())

def upload():
    ssh = SSHClient()
    ssh.set_missing_host_key_policy(AutoAddPolicy())
    ssh.connect(hostname='host', port=22, username='user', password='pass')

    sftp = ssh.open_sftp()

    sftp.put('/path/to/my/file', '/path/on/server/to/file', lambda current, total: eel.set_progress(round(current*100/total)) )

    sftp.close()
    ssh.close()

x = threading.Thread(target=upload)
eel.spawn(x.start())
    
eel.start('index.html', blocking=False)

x.join()

Pay attention to the use of the eel in sftp.put and run thread in eel.spawn. It's correct?

Thank you!

贡献者指南