[QGIS-Developer] Long running Python script running a model - moving it to background task?

Andreas Neumann a.neumann at carto.net
Thu Dec 14 23:45:07 PST 2017


I have a Python script that runs a Processing Model that takes about
20-30 seconds to run. 

Here is my code: 


def exportAnlagenAlsExcel():
  # Prepare processing framework
  from qgis.core import QgsProcessingFeatureSourceDefinition
  from processing.core.Processing import Processing
  import processing
  #run processing model
  processing.run("model:Anlagen-Export", { 'ewsanlagelayer' :
'service=\'zg_produktion\' user=\'ews\' password=\'xxx\' sslmode=disable
key=\'t_id\' srid=2056 type=Point table=\'ews\'.\'ews_anlage\'
(geometrie) sql=', 'native:orderbyexpression_1:Ausgabedatei' :
'C:/temp/ews_anlagen.xlsx' })
  #open result file in MS Excel
  command = 'start C:\\temp\\ews_anlagen.xlsx'
  iface.messageBar().pushMessage(u"Processing ExcelExport fertig",


While this code runs fine, the model also runs for half a minute and I
would like to use a processing background task, if this is feasible for
my code. Currently, my code is blocking the UI - a progress bar appears
in the map canvas (see
- this was a bit surprising to me - why is this progress bar appearing ?
My code is not asking for this progress bar?) - and if it appears,
shouldn't the progress bar be displayed in the status bar instead? 

Anyway, I guess my code needs to be improved so that it runs as a
background task utilizing the new QGIS task manager. Are there any "easy
to understand" Python code examples available that show how to run
Python code as a background task using QGIS task manager? 


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20171215/8baeab9c/attachment.html>

More information about the QGIS-Developer mailing list