Craig,

In addition to Content-type, I wonder if this would help.  On the
python server code, try setting these headers:

Expires: Fri, 01 Jan 1990 00:00:00 GMT
Pragma: no-cache
Cache-control: no-cache, must-revalidate




On Feb 4, 12:54 pm, Craig Schroeder <[email protected]> wrote:
> Unfortunately my datasource is not public, but I may be able to get
> something set up for other folks to look at.  To be continued...
>
> On Wed, Feb 4, 2009 at 11:35 AM, VizBoy <[email protected]> wrote:
> > If you could post your example (is the datasource public?) then we can try
> > to analyze the situation...
>
> > - VizBoy.
>
> > On Wed, Feb 4, 2009 at 6:33 PM, craigdataqa <[email protected]> wrote:
>
> >> Looks like we can rule out the GWT api being the problem.  I quickly
> >> threw together a JS version of the chart and it still doesn't work.
>
> >> The JS version exhibits the same behavior as before.  The data source
> >> query and chart drawing have no problems the first time but any
> >> subsequent requests behave as though they time out.
>
> >> I noticed one person had an issue with headers being sent after the
> >> response, but my setup doesn't have this issue.
>
> >> --Craig
>
> >> On Jan 22, 10:35 am, "Eric Z. Ayers" <[email protected]> wrote:
> >> > It seems like the GWT code involved in this problem is very minimal.
> >> > If you want to eliminate the GWT component, I would suggest you write
> >> > a very small JavaScript driver for your class and see if your second
> >> > query works.
>
> >> > -Eric.
>
> >> > On Jan 21, 11:30 am, Craig Schroeder <[email protected]> wrote:
>
> >> > > Hey VizBoy,
> >> > > Not sure if you were referring to me here but I am going to paste in
> >> my code
> >> > > below...
>
> >> > > Hopefully someone can help me figure out if this is an issue in GWT or
> >> the
> >> > > GWT API, or some environmental issue on my end.  I don't see any
> >> errors in
> >> > > application logic or system responses so I'm not sure why one request
> >> works
> >> > > and then subsequent ones don't.
>
> >> > > Thanks,
> >> > > Craig
>
> >> > > ##########python service#############
> >> > > import gviz_api, mmap, re, os, timeit
> >> > > from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
>
> >> > > def getResults(args):
> >> > >     fname = "xxxxxxxxxxxx-" + args[0]
> >> > >     fname = os.path.join("../audit", fname)
> >> > >     try:
> >> > >         fileobj = open(fname)
> >> > >     except:
> >> > >         return "file not found"
> >> > >     queryID = args[1]
> >> > >     try:
> >> > >         filters = args[2:]
> >> > >     except:
> >> > >         pass
> >> > >     flag = False
>
> >> > >     if len(filters) == 0:
> >> > >         try:
> >> > >             records[args[0]][args[1]]
> >> > >             description = {("key", "string"):("value", "number")}
> >> > >             data = records[args[0]][args[1]]
> >> > >             data_table = gviz_api.DataTable(description)
> >> > >             data_table.LoadData(data)
> >> > >             print
>
> >> data_table.ToJSonResponse(columns_order=("key","value"),order_by=reports[ar
> >> gs[1]]["sort"])
> >> > >             return
>
> >> data_table.ToJSonResponse(columns_order=("key","value"),order_by=reports[ar
> >> gs[1]]["sort"])
> >> > >         except KeyError:
> >> > >             print "KeyError"
> >> > >     if len(filters) == 0:
> >> > >         filemap = mmap.mmap(fileobj.fileno(), os.path.getsize(fname) ,
> >> > > access=mmap.ACCESS_READ)
> >> > >     else:
> >> > >         print "starting file filtering"
> >> > >         fileString = ""
> >> > >         fileList = []
> >> > >         c=0
> >> > >         for line in fileobj:
> >> > >             c+=1
> >> > >             if c%1000 == 0:
> >> > >                 print c
> >> > >             for f in filters:
> >> > >                 if flag:
> >> > >                     break
> >> > >                 if f not in line:
> >> > >                     flag = True
> >> > >             if not flag:
> >> > >                 fileList.append(line)
> >> > >             flag = False
> >> > >         print "ending file filtering"
> >> > >         fileString = ''.join(fileList)
> >> > >     pat = re.compile(reports[queryID]["regex"])
> >> > >     count = {}
> >> > >     if len(filters) == 0:
> >> > >         for m in pat.findall(filemap):
> >> > >             try:
> >> > >                 count[m] +=1
> >> > >             except KeyError:
> >> > >                 count[m] = 1
> >> > >     else:
> >> > >         for m in pat.findall(fileString):
> >> > >             try:
> >> > >                 count[m] +=1
> >> > >             except KeyError:
> >> > >                 count[m] = 1
> >> > >     if len(filters) == 0:
> >> > >         try:
> >> > >             records[args[0]][args[1]] = count
> >> > >         except:
> >> > >             records[args[0]] = {}
> >> > >             records[args[0]][args[1]] = count
> >> > >     print "just before returning"
> >> > >     try:
> >> > >         filemap.close()
> >> > >     except:
> >> > >         pass
> >> > >     fileString = ""
> >> > >     fileobj.close()
> >> > >     description = {("key", "string"):("value", "number")}
> >> > >     if len(filters) == 0:
> >> > >         data = records[args[0]][args[1]]
> >> > >     else:
> >> > >         data = count
> >> > >     data_table = gviz_api.DataTable(description)
> >> > >     data_table.LoadData(data)
> >> > >     print
>
> >> data_table.ToJSonResponse(columns_order=("key","value"),order_by=reports[ar
> >> gs[1]]["sort"])
> >> > >     return
>
> >> data_table.ToJSonResponse(columns_order=("key","value"),order_by=reports[ar
> >> gs[1]]["sort"])
>
> >> > > class MyHandler(BaseHTTPRequestHandler):
>
> >> > >     def do_GET(self):
> >> > >         if self.path.find("?") != -1:
> >> > >             queryString = self.path.split("?")[1]
> >> > >             queryArgs =
> >> > > queryString.split("tq=")[1].split("&")[0].split("%40")
> >> > >         urlargs = self.path.split("?")[0].split("/")
> >> > >         print urlargs
> >> > >         self.send_response(200)
> >> > >         self.send_header('Content-type',    'text/html')
> >> > >         self.end_headers()
> >> > >         if self.path == "/":
> >> > >             self.wfile.write("Don't know what you're trying to do")
> >> > >             return
> >> > >         if urlargs[1] == "gwt":
> >> > >             if urlargs[2] == "menu":
> >> > >                 self.wfile.write()
> >> > >             else:
> >> > >                 self.wfile.write(getResults(queryArgs))
> >> > >             self.wfile.write(open(xxxxxxxx).read())
> >> > >         return
> >> > > reports = {}
> >> > > reports["sessioncount"] = {}
> >> > > reports["sessioncount"]["description"] = "Counts Product Session
> >> Starts"
> >> > > reports["sessioncount"]["regex"] = r"ProductSessionStartAudit"
> >> > > reports["sessioncount"]["sort"] = "value"
>
> >> > > reports["1pm"] = {}
> >> > > reports["1pm"]["description"] = "Counts all activities during the 1pm
> >> hour"
> >> > > reports["1pm"]["regex"] = r"(?<=\|\|\d\d/\d\d/\d\d\d\d )13:\d\d"
> >> > > reports["1pm"]["sort"] = "key"
>
> >> > > reports["top-locids"] = {}
> >> > > reports["top-locids"]["description"] = "Ranks locids"
> >> > > reports["top-locids"]["regex"] =
> >> r"(?<=-)[-A-Za-z0-9_]*(?=-[^-|]{30,32})"
> >> > > reports["top-locids"]["sort"] = "value"
>
> >> > > records = {}
>
> >> > > def main():
> >> > >     try:
> >> > >         PORT = 8585
> >> > >         server = HTTPServer(('', PORT), MyHandler)
> >> > >         print 'started server on %s...' % PORT
>
> >> > >         server.serve_forever()
>
> >> > >     except (KeyboardInterrupt, SystemExit):
> >> > >         print "closing..."
> >> > >         server.socket.close()
>
> >> > > if __name__ == '__main__':
> >> > >     main()
> >> > > ###################################
>
> >> > > ##########dashboard.java############
> >> > > package com.xxxxxxx.client;
>
> >> > > import com.google.gwt.core.client.EntryPoint;
> >> > > import com.google.gwt.user.client.Window;
> >> > > import com.google.gwt.user.client.ui.ChangeListener;
> >> > > import com.google.gwt.user.client.ui.ClickListener;
> >> > > import com.google.gwt.user.client.ui.HorizontalPanel;
> >> > > import com.google.gwt.user.client.ui.ListBox;
> >> > > import com.google.gwt.user.client.ui.Panel;
> >> > > import com.google.gwt.user.client.ui.RootPanel;
> >> > > import com.google.gwt.user.client.ui.Widget;
> >> > > import com.google.gwt.visualization.client.AjaxLoader;
> >> > > import com.google.gwt.visualization.client.DataTable;
> >> > > import com.google.gwt.visualization.client.Query;
> >> > > import com.google.gwt.visualization.client.QueryResponse;
> >> > > import com.google.gwt.visualization.client.Query.Callback;
> >> > > import com.google.gwt.visualization.client.visualizations.ColumnChart;
> >> > > import com.google.gwt.visualization.client.visualizations.Table;
>
> >> > > import org.gwtwidgets.client.ui.cal.CalendarDate;
> >> > > import org.gwtwidgets.client.ui.cal.SimpleCalendar;
>
> >> > > public class dashboard implements EntryPoint {
> >> > > public static class vizData {
> >> > >     public static String vizDate = "";
> >> > >     public static String vizQuery = "";
> >> > >     public static int vizID;
> >> > >     public static ColumnChart col;
> >> > >     public static Table tab;
> >> > >     public static int count = 0;}
>
> >> > >   public void onModuleLoad() {
> >> > >     // Create a callback to be called when the visualization API
> >> > >     // has been loaded.
> >> > >     Runnable onLoadCallback = new Runnable() {
> >> > >       public void run() {
> >> > >         Panel panel = RootPanel.get();
> >> > >         vizData.col = new ColumnChart();
> >> > >         vizData.tab = new Table();
> >> > >         panel.add(vizData.col);
> >> > >         panel.add(vizData.tab);
> >> > >       }
> >> > >     };
>
> >> > >     Panel panel = RootPanel.get();
>
> >> > >     HorizontalPanel top = new HorizontalPanel();
>
> >> > >     SimpleCalendar cal = new SimpleCalendar();
> >> > >     cal.addClickListener(new ClickListener() {
> >> > >         @SuppressWarnings("deprecation")
> >> > > public void onClick(Widget sender) {
> >> > >          CalendarDate date = ((SimpleCalendar)
> >> sender).getDateSelected();
> >> > >          int y =
>
> ...
>
> read more »
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Visualization API" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/google-visualization-api?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to