export at hope.cz
export at hope.cz
Sat Jan 27 07:12:07 EST 2007
Graham , Thank you again for your help. So I added .both to input filter and handler req.method req.uri req.connection.id Now they looks like this: ############### from mod_python import apache,Cookie def inputfilter(filter): filter.req.log_error('Running inputfilter') filter.req.log_error('Setting myflag..') filter.req.myflag = True filter.req.log_error('myflag was set to:') filter.req.log_error(`filter.req.myflag`) filter.req.log_error('inputfilter-filter.req.method') filter.req.log_error(`filter.req.method`) filter.req.log_error('inputfilter-filter.req.uri:') filter.req.log_error(`filter.req.uri`) filter.req.log_error('inputfilter-filter.req.connection.i.d') filter.req.log_error(`filter.req.connection.id`) if filter.req.method != 'POST': filter.pass_on() return s = filter.read() while s: f.write(s) f.flush() filter.write(s) filter.flush() s = filter.read() if s is None: filter.close() f.close() ############### and a part of handler looks like this : ############## else: if req.method == 'POST': req.log_error('Myhandler') req.log_error('MyHandler, in POST request, has myflag') req.log_error('myhandler-req.method') req.log_error(`req.method`) req.log_error('myhandler-req.uri') req.log_error(`req.uri`) req.log_error('myhandler-req.connection.id') req.log_error(`req.connection.id`) req.log_error(`req.myflag`) ############### and the error log is here ################## [Sat Jan 27 13:01:33 2007] [notice] Apache/2.2.4 (Win32) configured -- resuming normal operations [Sat Jan 27 13:01:33 2007] [notice] Server built: Jan 9 2007 23:17:20 [Sat Jan 27 13:01:33 2007] [notice] Parent: Created child process 1864 [Sat Jan 27 13:01:33 2007] [notice] mod_python: Creating 8 session mutexes based on 0 max processes and 250 max threads. [Sat Jan 27 13:01:34 2007] [notice] Child 1864: Child process is running [Sat Jan 27 13:01:34 2007] [notice] Child 1864: Acquired the start mutex. [Sat Jan 27 13:01:34 2007] [notice] Child 1864: Starting 250 worker threads. [Sat Jan 27 13:01:34 2007] [notice] Child 1864: Starting thread to listen on port 80. [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] Running inputfilter [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] Setting myflag.. [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] myflag was set to: [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] True [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] inputfilter-filter.req.method [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] 'GET' [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] inputfilter-filter.req.uri: [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] '/mod/uploadvideo.py' [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] inputfilter-filter.req.connection.i.d [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] 236 [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] Running inputfilter [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] Setting myflag.. [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] myflag was set to: [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] True [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] inputfilter-filter.req.method [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] 'GET' [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] inputfilter-filter.req.uri: [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] '/mod/uploadvideo.py' [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] inputfilter-filter.req.connection.i.d [Sat Jan 27 13:01:41 2007] [error] [client 127.0.0.1] 236 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] Myhandler, referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] MyHandler, in POST request, has myflag, referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] myhandler-req.method, referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] 'POST', referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] myhandler-req.uri, referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] '/mod/uploadvideo.py', referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] myhandler-req.connection.id, referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] 236, referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] mod_python (pid=1864, interpreter='www.emim.cz', phase='PythonHandler', handler='uploadvideo'): Application error, referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] ServerName: 'www.emim.cz', referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] DocumentRoot: 'C:/Program Files/Apache Software Foundation/Apache2.2/htdocs', referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] URI: '/mod/uploadvideo.py', referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] Location: '/mod', referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] Directory: None, referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] Filename: 'C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/mod', referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] PathInfo: '/uploadvideo.py', referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] Traceback (most recent call last):, referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] File "C:\\PYTHON23\\Lib\\site- packages\\mod_python\\importer.py", line 1537, in HandlerDispatch\n default=default_handler, arg=req, silent=hlist.silent), referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] File "C:\\PYTHON23\\Lib\\site- packages\\mod_python\\importer.py", line 1229, in _process_target\n result = _execute_target(config, req, object, arg), referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] File "C:\\PYTHON23\\Lib\\site- packages\\mod_python\\importer.py", line 1128, in _execute_target\n result = object(arg), referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] File "C:/Django/projekty/mimiproject/apps/mimi/mod\\uploadvideo.py", line 69, in handler\n req.log_error(`req.myflag`), referer: http://127.0.0.1/mod/uploadvideo.py?17644 [Sat Jan 27 13:01:48 2007] [error] [client 127.0.0.1] AttributeError: 'mp_request' object has no attribute 'myflag', referer: http://127.0.0.1/mod/uploadvideo.py?17644 ################################ Can you see any problem there? Thank you for help and reply Lad. > > There is 4 seconds between the filter call and the handler call. That > seems a bit > long. Are you sure they come from the same request? > > In both filter and handler also log the following attributes: > > req.method > req.uri > req.connection.id > > For the filter, prefix with 'filter.' to get to req object first > obviously. > > You might also log result of os.getpid() to verify that each is run > in the same > process. > > Anyway, I suspect that it isn't from the same request. What is > missing here and > you need to understand is that the input filters for a request are > not actually > called until the handler calls req.read() or one of the other read > methods of the > request object. It is only after req.read() is called that the > req.myflag value would > have been set. So, if you haven't called req.read() before accessing > the attribute > it will fail. > > Graham > > On 27/01/2007, at 8:01 PM, export at hope.cz wrote: > > > Graham, > > Thank you for your reply. > > So, I used the debugging techniques like this: > > > > in input filter > > ########################### > > from mod_python import apache,Cookie > > def inputfilter(filter): > > filter.req.log_error('Running inputfilter') > > filter.req.log_error('Setting myflag..') > > filter.req.myflag = True > > filter.req.log_error('myflag was set to:') > > filter.req.log_error(`filter.req.myflag`) > > if filter.req.method != 'POST': > > filter.pass_on() > > return > > s = filter.read() > > while s: > > f.write(s) > > f.flush() > > filter.write(s) > > filter.flush() > > s = filter.read() > > > > if s is None: > > filter.close() > > f.close() > > ######################## > > > > in handler > > ########################## > > > > def handler(req): > > if req.method == 'GET': > > ...... > > > > else: > > if req.method == 'POST': > > req.log_error('Myhandler') > > req.log_error('MyHandler, in POST request, has myflag') > > req.log_error(`req.myflag`) > > .... > > .... > > ####################### > > and here is a part of error log > > > > .. > > [Sat Jan 27 09:48:54 2007] [notice] Child 2196: Starting thread to > > listen on port 80. > > [Sat Jan 27 09:49:05 2007] [error] [client 127.0.0.1] Running > > inputfilter > > [Sat Jan 27 09:49:05 2007] [error] [client 127.0.0.1] Setting myflag.. > > [Sat Jan 27 09:49:05 2007] [error] [client 127.0.0.1] myflag was > > set to: > > [Sat Jan 27 09:49:05 2007] [error] [client 127.0.0.1] True > > [Sat Jan 27 09:49:05 2007] [error] [client 127.0.0.1] Running > > inputfilter > > [Sat Jan 27 09:49:05 2007] [error] [client 127.0.0.1] Setting myflag.. > > [Sat Jan 27 09:49:05 2007] [error] [client 127.0.0.1] myflag was > > set to: > > [Sat Jan 27 09:49:05 2007] [error] [client 127.0.0.1] True > > [Sat Jan 27 09:49:08 2007] [error] [client 127.0.0.1] Running > > inputfilter > > [Sat Jan 27 09:49:08 2007] [error] [client 127.0.0.1] Setting myflag.. > > [Sat Jan 27 09:49:08 2007] [error] [client 127.0.0.1] myflag was > > set to: > > [Sat Jan 27 09:49:08 2007] [error] [client 127.0.0.1] True > > [Sat Jan 27 09:49:08 2007] [error] [client 127.0.0.1] Running > > inputfilter > > [Sat Jan 27 09:49:08 2007] [error] [client 127.0.0.1] Setting myflag.. > > [Sat Jan 27 09:49:08 2007] [error] [client 127.0.0.1] myflag was > > set to: > > [Sat Jan 27 09:49:08 2007] [error] [client 127.0.0.1] True > > [Sat Jan 27 09:49:12 2007] [error] [client 127.0.0.1] Myhandler, > > referer: > > http://127.0.0.1/mod/uploadvideo.py?17644 > > [Sat Jan 27 09:49:12 2007] [error] [client 127.0.0.1] MyHandler, in > > POST request, has myflag, > > referer: http://127.0.0.1/mod/uploadvideo.py?17644 > > ..... > > .... > > .... > > [Sat Jan 27 09:49:12 2007] [error] [client 127.0.0.1] > > AttributeError: 'mp_request' object has no > > attribute 'myflag', referer: http://127.0.0.1/mod/uploadvideo.py?17644 > > ... > > > > > > Where can be a problem? What shall I try? > > Can you see any mistake I make? > > Thank you again for help > > Lad > > > > > >> Use some standard debugging techniques yourself to try and work it > >> out. > >> > >> On 26/01/2007, at 10:44 PM, export at hope.cz wrote: > >> > >>> Graham, > >>> Thank you for your reply. > >>> I have > >>> > >>> def inputfilter(filter): > >>> filter.req.myflag = True > >> > >> Add: > >> > >> filter.req.log_error('inputfilter') > >> > >>> ... > >>> ... > >>> > >>> so, as you can see the first command in input filter > >>> is filter.req.myflag = True > >>> but yet, I can not access the req.myflag > >>> in my request handler. > >>> When I try > >>> req.write(`req.myflag`) > >> > >> Add before this: > >> > >> req.log_error('handler') > >> > >> In other words, use the logging system to dump information into the > >> Apache > >> log files to see if the input filter is actually being called. It > >> would look like it > >> isn't. What have you done so far to confirm it is? > >> > >> Graham > >> > >>> I will receive the same error: > >>> > >>> AttributeError: 'mp_request' object has no attribute 'myflag' > >>> > >>> What shall I try to solve the problem. Do you have any idea? > >>> Thank you > >>> Lad > >>> > >>>> Your input filter can't have been called then, or not the part > >>>> where you > >>>> assigned the attribute. If the variable may not be there in all > >>>> situations, > >>>> then use: > >>>> > >>>> if hasattr(req, 'myflag'): > >>>> if req.myflag: > >>>> .. > >>>> > >>>> Graham > >>>> > >>>> On 26/01/2007, at 7:09 PM, export at hope.cz wrote: > >>>> > >>>>> Graham , > >>>>> Thank you for your reply and help. > >>>>> I tried the way you suggested but I received the error > >>>>> > >>>>> AttributeError: 'mp_request' object has no attribute 'myflag' > >>>>> > >>>>> Can you please help? > >>>>> Thank you > >>>>> Lad. > >>>>> > >>>>> > >>>>>> > >>>>>> On 26/01/2007, at 2:45 AM, export at hope.cz wrote: > >>>>>> > >>>>>>> Depending on a value being calculated in input filter, > >>>>>>> I will have to make a decission in request handler. > >>>>>>> What is a way to find out the value of the variable from input > >>>>>>> filter in request handler? > >>>>>> > >>>>>> I believe this was mentioned before. > >>>>>> > >>>>>> In filter, set an attribute on the request object: > >>>>>> > >>>>>> def inputfilter(filter): > >>>>>> ... > >>>>>> filter.req.myflag = True > >>>>>> ... > >>>>>> > >>>>>> In the request handler, you can then access that variable. > >>>>>> > >>>>>> def handler(req): > >>>>>> ... > >>>>>> if req.myflag: > >>>>>> ... > >>>>>> ... > >>>>>> > >>>>>> Graham > >>>>> > >>>> > >>>> > >>> > >>> > >>> ------- End of forwarded message ------- > >
|