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 -~----------~----~----~----~------~----~------~--~---
