Jules Stevenson wrote:
> Hi Ian,
> 
>> I didn't notice this thread first time around, but you might find
>> WaitForIt (http://pythonpaste.org/waitforit/) helpful for cases like
>> these; you could write the code as blocking and let WaitForIt deal with
>> the long-running aspect.  (Assuming it runs for a long time, but
>> eventually finishes -- if you need to interact with it over time you
>> should stuff the process object in a module global)
> 
> Thanks, this does indeed look like just the ticket. However I'm struggling
> to get this to work with Pylons correctly, specifically it seems to
> interfere with the debugger in the way that I have it set up [which is
> probably wrong].
> 
> To set it up I came across a post
> (http://www.mail-archive.com/[email protected]/msg00213.html) on
> the paste mailing list which contained the following info:
> 
> -------------------
> so then I tried to
> use waitforit with pylons, so I made a new pylons app and added this to
> my test.ini file:
> 
> [app:main]
> use = config:development.ini
> filter-with = slow
> 
> [filter:slow]
> use=egg:waitforit
> time_limit=2
> poll_time=1
> -------------------
> 
> I don't think I even use test.ini, so I modded my development.ini file to
> look like this:
> 
> <snip>
> 
> [app:main]
> use = egg:ark
> full_stack = true
> cache_dir = %(here)s/data
> beaker.session.key = ark
> beaker.session.secret = somesecret
> sqlalchemy.default.url = sqlite:///%(here)s/data/project.db
> *filter-with = slow
> 
> *[filter:slow]
> *use=egg:waitforit
> *time_limit=2
> *poll_time=1
> 
> </snip>
> 
> With the * lines being the new additions [minus the asterisk of course].
> This does work, and I can use the wait for it message etc, however if the
> pylons debugger needs to kick in it's now broken, with the following errors:
> 
> Traceback (most recent call last):
>   File
> "c:\python26\lib\site-packages\paste-1.7.2-py2.6.egg\paste\evalexception\mid
> dleware.py", line 82, in simplecatcher_app
>     return application(environ, start_response)
>   File
> "c:\python26\lib\site-packages\paste-1.7.2-py2.6.egg\paste\httpexceptions.py
> ", line 636, in __call__
>     return self.application(environ, start_response)
>   File
> "c:\python26\lib\site-packages\paste-1.7.2-py2.6.egg\paste\evalexception\mid
> dleware.py", line 117, in application
>     res = func(*args, **form.mixed())
>   File
> "c:\python26\lib\site-packages\paste-1.7.2-py2.6.egg\paste\evalexception\mid
> dleware.py", line 140, in debug_info_replacement
>     debugcount = int(debugcount)
> TypeError: int() argument must be a string or a number, not 'list'
> 
> Any help on how to stop this?

Hmm... I haven't seen this error, though generally it's better if
WaitForIt is wrapped only around those parts of your app that are slow.

I don't think Pylons controllers have a clear WSGI interface.  That's 
too bad, they should.  Here's a WSGI wrapper on a controller:

class MyController(BaseController):
     ...

def app(environ, start_response):
     return MyController()(environ, start_response)

MyController = WaitForIt(app)


I believe that will work, and then you can wrap just the controller that 
is likely to be slow.


-- 
Ian Bicking : [email protected] : http://blog.ianbicking.org


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" 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/pylons-discuss?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to