Door Games Unlimited

Welcome, Guest.


Subject: JSON database Date: Fri Sep 26 2014 17:32:37
From: echicken To: Kirkman

  Re: JSON database
  By: Kirkman to All on Fri Sep 26 2014 14:59:39

 Ki> Right now I'm just having the Python script overwrite the .json file.

 Ki> Problem is, it doesn't seem like this is enough. In my tests, when the
 Ki> door requests data from the json service, the data it gets is old.

I believe that the JSON service only reads from that file when loading a DB
module (which happens when the service is started/restarted, possibly when a
given module is reloaded via json-svc-ctrl.js.)
 
 Ki> So do I need to make my Python script somehow tell Synchronet to re-fetch
 Ki> the data from the .json file once it has written a new version? If so, how
 Ki> do I do this?

There may be an easier way to do this, however I would suggest the following:

Create a script named "service.js" residing in the path for this module that
you specified in json-service.ini. This script will be loaded automatically by
the JSON service when it loads this module.

Instead of having your Python script overwrite the JSON DB file, have it save
its JSON output to some other file.  The following would monitor that file for
a change in timestamp:

load("json-client.js");

var jsonClient = new JSONClient("localhost", 10088); // adjust accordingly

var theFile = "/path/to/json/file/from/python/script";
var utime = file_date(theFile);

while(!js.terminated) {
 mswait(5);
 if(file_date(theFile) == utime)
  continue;
 utime = file_date(theFile);
 var f = new File(theFile);
 f.open("r");
 var stuff = JSON.parse(f.read());
 f.close();
 /* The next part depends on how your DB is laid out, but at this
    point you can copy values from 'stuff' into your DB */
}

jsonClient.disconnect();

Obviously this could be improved in various ways, but that should get you
started.  (Checking that the file exists and is openable / opened, etc. would
be suggested improvements.)

---
echicken
electronic chicken bbs - bbs.electronicchicken.com - 416-273-7230
 ■ Synchronet ■ electronic chicken bbs - bbs.electronicchicken.com

Previous Message       Next Message
In Reply To: JSON database (Kirkman)
Replies: Re: JSON database (Kirkman)