I’ve got a Python CGI script that pulls data from a GPS service; I’d like this information to be updated on the webpage about once every 10s (the max allowed by the GPS service’s TOS). But there could be, say, 100 users viewing the webpage at once, all calling the script.
I think the users’ scripts need to grab data from a buffer page that itself only upates once every ten seconds. How can I make this buffer page auto-update if there’s no one directly viewing the content (and not accessing the CGI)? Are there better ways to accomplish this?
Cache the results of your GPS data query in a file or database (sqlite) along with a datetime.
You can then do a datetime check against the last cached datetime to initiate another GPS data query.
You’ll probably run into concurrency issues with cgi and the datetime check though…
To get around concurrency issues, you can use sqlite, and put the write in a try/except.
Here’s a sample cache implementation using sqlite.
So we have the cache tool now the implementation side.
You’ll want to check the cache first then if it’s not ‘fresh’ (doens’t return anything), go grab the data using your current method. Then cache the data you grabbed.
you should probably organize this better, but you should get the general idea here.
Using this sample, you just replace your current calls to ‘remote_get_gps_data’ with ‘get_gps_data’.