[QGIS-Developer] [processing] launching separate process/thread

Andreas Plesch andreasplesch at gmail.com
Sun May 21 14:55:45 PDT 2017


Looking around some more, there is also os.spawn and its recommended update
subprocess.Popen.

So

os.chdir(root_folder)
pid = subprocess.Popen(['python', '-m', 'SimpleHTTPServer', str(port)]).pid

and later
os.kill(pid, 7)

works robustly in my tests. This seems similar to QProcess.startDetached
which may provide better platform coverage (?).

-Andreas




On Sun, May 21, 2017 at 9:30 AM, Andreas Plesch <andreasplesch at gmail.com>
wrote:

> Hi Giovanni,
>
> thanks for the pointer. When I use multiprocessing.Process instead of
> threading.Thread I get:
>
> PicklingError: Can't pickle <function webserver at 0x1622F330>: it's not
> found as __main__.webserver
>
> This is probably related to:
>
> https://docs.python.org/2/library/multiprocessing.html#windows
>
> So I am not sure how one would use multiprocessing from a processing
> script rather than from the __main__ python program.
>
> -Andreas
>
>
> On Sun, May 21, 2017 at 8:45 AM, G. Allegri <giohappy at gmail.com> wrote:
>
>> Side note: multiprocessing is part of the Python standard library.
>> https://docs.python.org/2.7/library/multiprocessing.html
>>
>> Giovanni
>>
>> Il 21 mag 2017 14:18, "Andreas Plesch" <andreasplesch at gmail.com> ha
>> scritto:
>>
>>> As a followup, here is the simple processing script which is my attempt
>>> at launching a separate task:
>>>
>>> https://github.com/andreasplesch/QGIS-X3D-Processing/blob/ma
>>> ster/scripts/launch_webserver.py
>>>
>>> qgis2web does not seem to need a real http server for the preview as
>>> openlayers apparently can use the file protocol.
>>>
>>> -Andreas
>>>
>>> On Sat, May 20, 2017 at 5:29 PM, Andreas Plesch <andreasplesch at gmail.com
>>> > wrote:
>>>
>>>> I would like to launch a minimal web server from a processing script to
>>>> serve html properly (rather than using the file protocol).
>>>>
>>>> Since the web server needs to run and keep running separately from qgis
>>>> or the qgis python interpreter, I investigated various ways to accomplish
>>>> this using SimpleHTTPServer. On windows 2.18.7 as linux should be more
>>>> robust.
>>>>
>>>> - threading.Threat : start() works until the server actually serves a
>>>> file. Then qgis crashes with a minidump . For some reason, the crashing
>>>> happens not always but more often than not.
>>>> - multiprocessing : seems to be the recommended solution but I do not
>>>> seem to have it with Qgis python (?)
>>>> - QProcess.start() : works from the python terminal, seems robust but
>>>> does not seem to work from a processing script (?). Would be the preferred
>>>> solution.
>>>> - QProcess.startDetached('python',(args),dir) : works reliably but
>>>> requires killing and restarting the process to change the root directory
>>>> served
>>>>
>>>> This may all change with Qgis 3 but I suspect 2.18 will be around for a
>>>> while, too.
>>>>
>>>> Any recommendations or ideas would be welcome.
>>>>
>>>> I will look into qgis2web to see what it does.
>>>>
>>>> --
>>>> Andreas Plesch
>>>> 39 Barbara Rd.
>>>> Waltham, MA 02453
>>>>
>>>
>>>
>>>
>>> --
>>> Andreas Plesch
>>> 39 Barbara Rd.
>>> Waltham, MA 02453
>>>
>>> _______________________________________________
>>> QGIS-Developer mailing list
>>> QGIS-Developer at lists.osgeo.org
>>> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
>>> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
>>>
>>
>
>
> --
> Andreas Plesch
> 39 Barbara Rd.
> Waltham, MA 02453
>



-- 
Andreas Plesch
39 Barbara Rd.
Waltham, MA 02453
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20170521/343dd698/attachment.html>


More information about the QGIS-Developer mailing list