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