Ignore:
Timestamp:
Sep 26, 2018, 5:01:45 PM (19 months ago)
Author:
Juanma
Message:

snapManager with threads

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/snapManager.py

    r7721 r8139  
    1111import time
    1212import html
     13import threading
    1314#Needed for async find method, perhaps only on xenial
    1415wrap=Gio.SimpleAsyncResult()
     
    141142                self._set_status(1)
    142143                for pkg in pkgs:
    143                         app=self.store.get_app_by_pkgname(pkg.get_name())
    144                         if not app:
    145                                 self._debug("Searching for %s"%pkg.get_name())
    146                                 app=self.store.get_app_by_id(pkg.get_name().lower()+".desktop")
     144                        maxconnections = 10
     145                        threads=[]
     146                        semaphore = threading.BoundedSemaphore(value=maxconnections)
     147                        th=threading.Thread(target=self._th_load_store, args = (store,pkg,semaphore))
     148                        threads.append(th)
     149                        th.start()
     150                return(store)
     151
     152        def _th_load_store(self,store,pkg,semaphore):
     153                semaphore.acquire()
     154                app=self.store.get_app_by_pkgname(pkg.get_name())
     155                if not app:
     156                        self._debug("Searching for %s"%pkg.get_name())
     157                        app=self.store.get_app_by_id(pkg.get_name().lower()+".desktop")
    147158                        if app:
    148159                                bundle=appstream.Bundle()
     
    154165                        else:
    155166                                store.add_app(self._generate_appstream_app_from_snap(pkg))
    156                 return(store)
     167                semaphore.release()
    157168
    158169        def _load_from_cache(self,store):
     
    201212                        if self.icon_cache_enabled:
    202213                                icon.set_kind(appstream.IconKind.LOCAL)
     214                                       
    203215                                icon.set_name(self._download_file(pkg.get_icon(),pkg.get_name(),self.icons_folder))
    204216                        else:
Note: See TracChangeset for help on using the changeset viewer.