I have the following:
WAMP
Python 2.7
MOD_WSGI
WEB.PY
When I try to execute the below code the Apache access logs say it's an HTTP/1.1" 405 4 Error, however the page output says "None". This is the first time we are trying to use Python code. What are we doing wrong?
#!/home/protected/bin/pythonimport weburls = ( '/', 'hello', '/terms', 'terms')app = web.application(urls, globals())class hello: def GET(self): return '<form action="terms" method="POST"><textarea name="context" style="width:450px; height:300px;">Inevitably, then, corporations do not restrict themselves merely to the arena of economics. Rather, as John Dewey observed, "politics is the shadow cast on society by big business". Over decades, corporations have worked together to ensure that the choices offered by \'representative democracy\' all represent their greed for maximised profits.\n\nThis is a sensitive task. We do not live in a totalitarian society - the public potentially has enormous power to interfere. The goal, then, is to persuade the public that corporate-sponsored political choice is meaningful, that it makes a difference. The task of politicians at all points of the supposed \'spectrum\' is to appear passionately principled while participating in what is essentially a charade.</textarea><br />JSON callback: <input type="text" name="callback" /><br /><input type="submit" value="Get terms" /></form>'class terms: def POST(self): import re import simplejson as json from topia.termextract import extract extractor = extract.TermExtractor() #extractor.filter = extract.permissiveFilter extractor.filter = extract.DefaultFilter(singleStrengthMinOccur=1) def term_compare(x, y): if y[1]+y[2]*2 > x[1]+x[2]*2: return 1 elif y[1]==x[1] and y[2]==x[2]: return 0 else: # x<y return -1 input = web.input(callback=None) content = input.context.lower() content = content.replace(u"\u201c", '"').replace(u"\u201d", '"').replace(u"\u2018", "'").replace(u"\u2019", "'").replace(u"\u2026", "") list = sorted(extractor(content), term_compare) list = list[:50] for i in range(len(list)-1, -1, -1): if len(list[i][0]) == 1 or list[i][2] > 2 or (list[i][0].find("http") >= 0) or not re.search('[a-z]', list[i][0]) or re.search('[0-9]', list[i][0]): list.remove(list[i]) else: list[i] = list[i][0] callback = input.callback if callback and re.match('^[a-zA-Z0-9._\[\]]+$', callback): return callback + '(' + json.dumps(list, indent=4) + ')' else: return json.dumps(list, indent=4) #return json.dumps(list, indent=4) #return json.dumps(extractor(i.context).sort(term_compare))if __name__ == "__main__": app.run()app = web.application(urls, globals(), autoreload=False)application = app.wsgifunc()
Well, I have been able to execute the script from command line... Guess we are all set.
Appreciate your time and help
BigRat
Sorry, I was away for a day and forgot. There is nothing wrong with the above post. I suspect that the configuration in Apahce is wrong. It normally looks for cgi-bin when a post comes in, but you also have mod_wsgi to configure. If you post your httpd.conf I'll take a look for you.