On Mon, Dec 17, 2018 at 04:09:27PM -0500, Adam Tauno Williams wrote:
> I'm rebuilding an old application in Python3+Gtk.
> The applications makes calls to remote services which I'd like to have
> be asynchronous.  I've search around the interwebz and found a wide
> variety of answers to this question [Gtk.mainloop + async(other-
> loop?)];  almost all of them are pretty old.
> Is there an "official" / endorsed / classical way to handle this?
> None of the "official" HOWTOs I have found address this - - - unless I
> have missed one [entirley possible]

There are two main approaches:

- use async APIs that integrate with the glib main loop
  (e.g. Gio has classes for talking to sockets/subprocesses, which is
  low level, then there's Soap that gives you a higher level async HTTP

- use threads, being very careful never to call GTK+ APIs from them
  directly (use GLib.idle_add() to register callbacks to be executed
  from the main thread, whenever a background thread does something
  interesting that needs to be reflected in the UI).

https://wiki.gnome.org/Projects/PyGObject/Threading has examples of
both threads and using Goo.File.load_contents_async() to download a
file over HTTP asyncronously.

Marius Gedminas
PCMCIA - People Can't Memorize Computer Industry Acronyms
gtk-app-devel-list mailing list

Reply via email to