python-eel/Eel

Is it possible to start a thread this way?

Open

#584 opened on Apr 15, 2022

View on GitHub
 (0 comments) (0 reactions) (0 assignees)Python (570 forks)batch import
help wanted

Repository metrics

Stars
 (5,980 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

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!

Contributor guide