python-eel/Eel

Is it possible to start a thread this way?

Aperta

#584 aperta il 15 apr 2022

 (0 commenti) (0 reazioni) (0 assegnatari)Python (570 fork)batch import
help wanted

Metriche repository

Star
 (5980 stelle)
Metriche merge PR
 (Metriche PR in attesa)

Descrizione

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!

Guida contributor