[Twisted-Python] Question about using the adbapi
Albert Brandl
albert.brandl at weiermayer.com
Mon May 9 04:50:46 MDT 2011
Hi!
In the application I'm currently working on, we gather data from
different sources and store them in a database, but only if the
values have changed.
One example is GPS information. We don't want to store hundreds of
identical values that are sent by the receiver, so we have to compare the
last written row with the current latitude / longitude pair.
I use a subclass of NMEARreceiver class to determine the current latitude
and longitude. Then I query the database using a ConnectionPool instance
to get the previous values for latitude and longitude. If the result
differs from the current values, a new entry is stored, again using the
ConnectionPool.
The problem is: How do I "connect" the current latitude and longitude to
the database query? The query returns a Deferred object, but this expects
a callback with only one argument, the result of the query.
Storing them as instance variables of NMEAReceiver does not seem to be
the right way, since I don't know how long it takes to query the database
- the relevant GPS information might be overwritten by a new NMEA
telegram when the connection pool finally triggers the callback
One workaround I've found is to add this information to the SQL query,
but this seems quite weird to me (and doesn't work in the case that the
query does not return a result).
A different approach would be to implement a callback with three
arguments (result, latitude and longitude), and wrap it in a lambda
function that fills latitude and longitude with the current values.
Would this would be a better way to handle this requirement?
How would you implement this?
Thanks & best regards,
Albert
--
Albert Brandl
Weiermayer Solutions GmbH | Abteistraße 12, A-4813 Altmünster
phone: +43 (0) 720 70 30 14 | fax: +43 (0) 7612 20 3 56
web: http://www.weiermayer.com
More information about the Twisted-Python
mailing list