Changeset 8139


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

snapManager with threads

Location:
lliurex-store/trunk/fuentes
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • lliurex-store/trunk/fuentes/debian/changelog

    r8084 r8139  
     1lliurex-store (0.6) xenial; urgency=medium
     2
     3  * SnapManager: add threads
     4
     5 -- Juanma Navarro Mañez <juanma1980@gmail.com>  Wed, 26 Sep 2018 17:00:44 +0200
     6
    17lliurex-store (0.5.9) xenial; urgency=medium
    28
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/searchManager.py

    r7433 r8139  
    130130                        categories_set=set(tokens)
    131131                        apps_in_store=self.store.get_apps()
     132                        if max_results:
     133                                apps_in_store=apps_in_store[0:max_results]
    132134                        count_apps=len(apps_in_store)
    133135                        self.progress=0
     
    163165#                       for app in applist:
    164166#                               self._debug("Added "+app.get_id())
    165                 if max_results:
    166                         applist=applist[0:max_results]
     167#               if max_results:
     168#                       applist=applist[0:max_results]
    167169                #List only valid categories
    168170
  • 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.