[Qgis-user] QGIS3: Running processing algorithms in a plugin using QgsProcessingAlgRunnerTask

Havard Tveite havard.tveite at nmbu.no
Mon Apr 23 08:12:50 PDT 2018


Hi,

I would like to use a processing algorithm in a plugin,
and run it as a QgsTask to avoid user interface "freeze".

I have tested with QGIS 3 (3.0.2) using the "native.buffer"
algorithm and a line vector layer:

  context = QgsProcessingContext()
  alg=QgsApplication.processingRegistry().algorithmById('native:buffer')
  params={
    'INPUT': inputlayer,
    'DISTANCE': 100.0,
    'OUTPUT':'/home/test.shp'
  }
  task = QgsProcessingAlgRunnerTask(alg,params,context)
  QgsApplication.taskManager().addTask(task)

The algorithm runs fine (the progressbar in the status
area at the bottom of the QGIS interface is counting up
to 100% and the buffer data set is generated and OK),
but QGIS crashes immediately after the algorithm has
completed:

  QGIS died on signal 11Could not attach to process.  If your uid 
matches the uid of the target
  process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try
  again as the root user.  For more details, see 
/etc/sysctl.d/10-ptrace.conf
  ptrace: Operation not permitted.
  No thread selected
  No stack.
  gdb returned 0
  Aborted (core dumped)

It would be great if someone could explain the proper way
of using QgsProcessingAlgRunnerTask, and perhaps provide
an example of how to use it in a plugin.  I have tried to
search the web, but have not found much.
How should the "context" be set?
How should the task and the results be handled?
...


Håvard
-- 
Håvard Tveite
Faculty of Sciences and Technology, NMBU
Drøbakveien 31, POBox 5003, N-1432 Ås, NORWAY
Phone: +47 67231548   Web: http://www.nmbu.no



More information about the Qgis-user mailing list