Re: Session directories in 0.9.6

2007-08-24 Thread Christoph Haas

On Thu, Aug 23, 2007 at 06:16:35PM -0700, Mike Orr wrote:
 What are the cache and session config variables in 0.9.6?  I upgraded
 my application with paster create and it contained:
 
 beaker.session.key = ...
 beaker.session.secret = ...
 cache_dir = %(here)s/data
 cache_enabled = true
 cache.data = 3600
 cache.static = 3600
 
 I had defined cache.data and cache.static for my own use.

A freshly created project reads:

cache_dir = %(here)s/data
beaker.session.key = foo
beaker.session.secret = somesecret
#beaker.cache.data_dir = %(here)s/data/cache
#beaker.session.data_dir = %(here)s/data/sessions

 At some point I got a DeprecationWarning that all cache_ variables
 should be changed to cache..  Looking back, it must have been
 cache_enabled that triggered it.  So I changed the underscores to
 dots, and later noticed a None directory in my application,

Try the above settings (beaker.cache.*). Might be the cause.

Cheers
 Christoph


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



Trouble with Routes

2007-08-24 Thread Dan Korostelev
Hello!

I have a problem with named routes. I defined two routes with different
names and same dynamic part. Now, when I'm using url_for to generate an url
for one of the routes, it just use the first connected route, independently
on the specified name. Like this:

 from routes import *
 m = Mapper()
 m.connect('gallery_thumb', 'images/gallery/:(image_id)_thumbnail.jpg')
 m.connect('gallery', 'images/gallery/:(image_id).jpg')
 url_for('gallery_thumb', image_id=1)
'/images/gallery/1_thumbnail.jpg'
 url_for('gallery', image_id=1)
'/images/gallery/1_thumbnail.jpg'

I don't get the problem, why that? It drives me crazy :)

Thanks for help!

-- 
WBR, Dan Korostelev

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: Trouble with Routes

2007-08-24 Thread Dan Korostelev
Yeah, I also worked around the problem this way, but I don't like it. Looks
like there's a bug in Routes. Thanks for information.

On 8/24/07, Marcin Kasperski [EMAIL PROTECTED] wrote:


  from routes import *
  m = Mapper()
  m.connect('gallery_thumb',
 'images/gallery/:(image_id)_thumbnail.jpg')
  m.connect('gallery', 'images/gallery/:(image_id).jpg')
  url_for('gallery_thumb', image_id=1)
  '/images/gallery/1_thumbnail.jpg'
  url_for('gallery', image_id=1)
  '/images/gallery/1_thumbnail.jpg'

 I also do not understand why it is implemented this way.

 Out of curiosity I debugged through routes and it seems that
 in case named route is used, routes:
 - locate the route by name
 - extracts arguments from this route
 - abandons the route
 - generates url as if no name was given

 :-

 Easy workaround is to name parameters differently, the following work
 as expected:

 from routes import *
 m = Mapper()
 m.debug = True
 m.connect('gallery_thumb', 'images/gallery/:(image_id)_thumbnail.jpg')
 m.connect('gallery', 'images/gallery/:(img_id).jpg')
 print url_for('gallery_thumb', image_id=1)
 print url_for('gallery', img_id=1)

 But I have the feeling that something is really wrong here...


 



-- 
WBR, Dan Korostelev

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: Trouble with Routes

2007-08-24 Thread Marcin Kasperski

 from routes import *
 m = Mapper()
 m.connect('gallery_thumb', 'images/gallery/:(image_id)_thumbnail.jpg')
 m.connect('gallery', 'images/gallery/:(image_id).jpg')
 url_for('gallery_thumb', image_id=1)
 '/images/gallery/1_thumbnail.jpg'
 url_for('gallery', image_id=1)
 '/images/gallery/1_thumbnail.jpg'

I also do not understand why it is implemented this way.

Out of curiosity I debugged through routes and it seems that
in case named route is used, routes:
- locate the route by name
- extracts arguments from this route
- abandons the route
- generates url as if no name was given

:-

Easy workaround is to name parameters differently, the following work
as expected:

from routes import *
m = Mapper()
m.debug = True
m.connect('gallery_thumb', 'images/gallery/:(image_id)_thumbnail.jpg')
m.connect('gallery', 'images/gallery/:(img_id).jpg')
print url_for('gallery_thumb', image_id=1)
print url_for('gallery', img_id=1)

But I have the feeling that something is really wrong here...


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: Pylons datagrid? And when will TG merge?

2007-08-24 Thread Cliff Wells

On Thu, 2007-08-23 at 21:12 -0700, walterbyrd wrote:
 Does Pylons have a datagrid component? Data laid out in a table, and
 click the column header to sort by that column. 
 I am looking for
 something with basic CRUD, and a sort filter. Also something that can
 handle related data.

I'd recommend looking at ExtJS.  I'm unaware of any other open source JS
library with a more advanced grid.  Integration with Pylons is pretty
straightforward.  I've used it for a few projects now and can't
recommend it highly enough.

http://extjs.com/deploy/ext/docs/

(See Examples and Demos - Grid in the tree on the left).

Regards,
Cliff


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



implementing a scalable (to multiple processors and multiple servers) Pylons webapp

2007-08-24 Thread Pekka Jääskeläinen
Hello,

In our new project we want to implement the web application from the
beginning to be
easily scalable to 1) multiple cores (on the same server) and to 2) multiple
separate servers.

Due to the infamous GIL ruining multithreading scalability of Python, the
only sensible way to
implement both 1) and 2) seems to be to run multiple instances of the server
(we plan to
use the Paster to serve the app) and use a separate load-balancer (possibly
some Apache mod...
any recommendations?) to redirect requests to each of the server instances
running either on the
same machine (to take advantage of 1) or to separate servers (to implement
2).

Of course, in this setup there's no real difference between 1) and 2) which
is kind of nice.

However, we started to think the practical issues with this in Pylons. In
principle, making this work
reliably means to distribute the session data so all server processes can
access each session's data.
For this we plan to store the session data to the database and reduce its
overhead using memcached.

How to implement this reliably on Pylons? The first thing that pops into my
mind is to add code
in __call__() of the base controller to load the session data (from
memcached or from DB). But how
about saving? This would be best implemented in session.save() so there's no
useless saving (which
invalidates the memcached entry) if nothing hasn't been changed. Is there a
way to do this nicely
without poking with Pylons code?

Any ideas and comments considering this kind of scalable Pylons
implementations are welcome.

Thanks,

-- 
--PJ

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: 'c' variable between redirects

2007-08-24 Thread Christoph Haas

On Fri, Aug 24, 2007 at 02:33:07PM +0200, Tomasz Nazar wrote:
 Whatever variable attached to 'c', it is available in the template when
 rendered via 'render_response('x.tmpl')'.
 
 I often however use redirects 'h.redirect_to(another_action)' to reuse
 controller's code. And the 'c'-attached variables are not present in the
 redirected template.

Correct. A redirect issues a Location: header to be sent to the
browser and that concludes the current HTTP communication. The browser
will then start a new HTTP request with the new location.

 As I understand 'c' is always reset before any controller's action - what is
 not fun for me, as in my app one user request/click is often 2 (or more)
 Pylons controllers' actions, hence http redirects..

Without knowing your application I dare say that this sounds like you
are using redirect_to in the wrong places. If the application is
supposed to do multiple things when a user does a certain HTTP request
then why can't one controller's action do that alone?

 What other options instead of putting variables to http session does one have
 for passing variables through redirects?

The session dictionary.

 Christoph


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



'c' variable between redirects

2007-08-24 Thread Tomasz Nazar
Hi there!

Whatever variable attached to 'c', it is available in the template when
rendered via 'render_response('x.tmpl')'.

I often however use redirects 'h.redirect_to(another_action)' to reuse
controller's code. And the 'c'-attached variables are not present in the
redirected template.

As I understand 'c' is always reset before any controller's action - what is
not fun for me, as in my app one user request/click is often 2 (or more)
Pylons controllers' actions, hence http redirects..

What other options instead of putting variables to http session does one
have for passing variables through redirects?

T.

-- 
  _i__'simplicity_is_the_key'__tomasz_nazar
_ii'i_am_concern_oriented'JKM-UPR
_iii__'patsystem.sf.net'___linux_user
_'aspectized.com'___prevayler

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: Pylons datagrid? And when will TG merge?

2007-08-24 Thread walterbyrd



On Aug 24, 4:23 am, Cliff Wells [EMAIL PROTECTED] wrote:

 I'd recommend looking at ExtJS.  I'm unaware of any other open source JS

But doesn't that only handle the front end stuff? What about the back-
end logic?


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: 'c' variable between redirects

2007-08-24 Thread Evert Rol

 As I understand 'c' is always reset before any controller's action  
 - what is
 not fun for me, as in my app one user request/click is often 2  
 (or more)
 Pylons controllers' actions, hence http redirects..

 Without knowing your application I dare say that this sounds like you
 are using redirect_to in the wrong places. If the application is
 supposed to do multiple things when a user does a certain HTTP request
 then why can't one controller's action do that alone?

Actually, I was in such a situation not too long ago, so I'm curious  
what the best solution actually is.
The situation itself is as follows:
- user edits form
- submit triggers controller+action.
   I use the same action when posting as when asking for the form,  
differentiating between POST and GET requests.
- If the POST data does not validate, the rest of the action is  
executed (having set a c.errors variable), which leads again
   to the form, but this time with errors indicated. The user can now  
correct these.
- If the POST data validates, I redirect (to prevent the 'reload post  
data?' question) to the form again, which then executes the GET part.  
This is done so that the user can edit more if he/she wants. Perhaps  
this is where I go wrong, but I feel it makes sense in my case. To  
indicate things have changed, some text on the top of the webpage  
says 'your data have been updated; you can chance more below if you  
like'. This text appears if a global variable is set (g.something),  
which is set just before the redirection. I immediately remove the  
'something' attribute after doing this (actually, before rendering,  
but having set c.something = g.something), so that next time the user  
(re)loads the form webpage, the message disappears.

So perhaps, the last redirect should go to a different webpage?  
Should that page then have a link 'please click here if you want to  
change things further'. And one would still like to inform the user  
that 'your data have been updated', so there's still some need of  
passing a variable (a simple boolean flag) between redirects.

 What other options instead of putting variables to http session  
 does one have
 for passing variables through redirects?
 The session dictionary.

As mentioned, I'm using the g variable (removing the attribute when  
not needed), not session. Which one would be better? Is g perhaps  
tied to the application, ie if multiple users use it, they all use  
the same g variable, but session is still (browser/ip-address) user- 
dependent? Sorry, I'm still a newbie, so I'm not t0o clear on this.

Cheers,

   Evert



--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: Pylons datagrid? And when will TG merge?

2007-08-24 Thread Cliff Wells

On Fri, 2007-08-24 at 06:04 -0700, walterbyrd wrote:
 
 
 On Aug 24, 4:23 am, Cliff Wells [EMAIL PROTECTED] wrote:
 
  I'd recommend looking at ExtJS.  I'm unaware of any other open source JS
 
 But doesn't that only handle the front end stuff? What about the back-
 end logic?

The grid control calls your controller and it returns jsonified rows for
the grid to display.  It's pretty simple.   You don't need support
from Pylons to do it and I actually suspect that relying on built-in
support might prove limiting. 

Regards,
Cliff


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: 'c' variable between redirects

2007-08-24 Thread Peter Hansen

Evert Rol wrote:
 As mentioned, I'm using the g variable (removing the attribute when  
 not needed), not session. Which one would be better? Is g perhaps  
 tied to the application, ie if multiple users use it, they all use  
 the same g variable, but session is still (browser/ip-address) user- 
 dependent? Sorry, I'm still a newbie, so I'm not t0o clear on this.

You definitely don't want to use g, which is truly application-global.
That means separate threads see the same g, and certainly separate
requests even if they come from different users.

Sessions are tied to the user, which means (roughly) that regardless of
threads you'll get the correct information about the user.

Everything else you're doing sounds quite reasonable and clean and nice
for the user, so if you just switch to sessions you'll be quite
reasonable and clean and nice *and* safe. ;-)

-Peter


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: implementing a scalable (to multiple processors and multiple servers) Pylons webapp

2007-08-24 Thread Philip Jenvey


On Aug 24, 2007, at 4:41 AM, Pekka Jääskeläinen wrote:

 Hello,

 In our new project we want to implement the web application from  
 the beginning to be
 easily scalable to 1) multiple cores (on the same server) and to 2)  
 multiple separate servers.

 Due to the infamous GIL ruining multithreading scalability of  
 Python, the only sensible way to
 implement both 1) and 2) seems to be to run multiple instances of  
 the server (we plan to
 use the Paster to serve the app) and use a separate load-balancer  
 (possibly some Apache mod...
 any recommendations?) to redirect requests to each of the server  
 instances running either on the
 same machine (to take advantage of 1) or to separate servers (to  
 implement 2).

Apache 2.2 has a mod_proxy_balancer. If performance is a concern, you  
should go with the CherryPy WSGI server.

use = egg:PasteScript#cherrypy

instead of

use egg:Paste#httpserver


 Of course, in this setup there's no real difference between 1) and  
 2) which is kind of nice.

 However, we started to think the practical issues with this in  
 Pylons. In principle, making this work
 reliably means to distribute the session data so all server  
 processes can access each session's data.
 For this we plan to store the session data to the database and  
 reduce its overhead using memcached.

Beaker has support for using a database or a memcached backend,  
though the docs on how to do this seem to be currently lacking.

--
Philip Jenvey



--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: implementing a scalable (to multiple processors and multiple servers) Pylons webapp

2007-08-24 Thread Cliff Wells

On Fri, 2007-08-24 at 14:41 +0300, Pekka Jääskeläinen wrote:

 However, we started to think the practical issues with this in Pylons.
 In principle, making this work 
 reliably means to distribute the session data so all server processes
 can access each session's data.

I'm curious about this too.  I've been actually doing it already for
some time (albeit not on any heavily loaded sites) using Nginx and a
default Pylons setup and quite frankly I've not had any issues despite
taking no precautions.

My only possible explanation is that either a) Nginx makes some attempt
to track sessions itself and always passes the same IP back to the same
backend Pylons process or b) Pylons automagically makes it work.

Either way I'd like to feel a little more certain about this.

Regards,
Cliff


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: implementing a scalable (to multiple processors and multiple servers) Pylons webapp

2007-08-24 Thread Cliff Wells

On Fri, 2007-08-24 at 15:16 -0700, Cliff Wells wrote:
 On Fri, 2007-08-24 at 14:41 +0300, Pekka Jääskeläinen wrote:
 
  However, we started to think the practical issues with this in Pylons.
  In principle, making this work 
  reliably means to distribute the session data so all server processes
  can access each session's data.
 
 I'm curious about this too.  I've been actually doing it already for
 some time (albeit not on any heavily loaded sites) using Nginx and a
 default Pylons setup and quite frankly I've not had any issues despite
 taking no precautions.
 
 My only possible explanation is that either a) Nginx makes some attempt
 to track sessions itself and always passes the same IP back to the same
 backend Pylons process or b) Pylons automagically makes it work.
 
 Either way I'd like to feel a little more certain about this.

Just to clarify: I'm not load balancing across multiple servers, just
multiple Pylons backends on the same machine.

Regards,
Cliff


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: implementing a scalable (to multiple processors and multiple servers) Pylons webapp

2007-08-24 Thread Bob Ippolito
On 8/24/07, Cliff Wells [EMAIL PROTECTED] wrote:

 On Fri, 2007-08-24 at 15:16 -0700, Cliff Wells wrote:
  On Fri, 2007-08-24 at 14:41 +0300, Pekka Jääskeläinen wrote:
 
   However, we started to think the practical issues with this in Pylons.
   In principle, making this work
   reliably means to distribute the session data so all server processes
   can access each session's data.
 
  I'm curious about this too.  I've been actually doing it already for
  some time (albeit not on any heavily loaded sites) using Nginx and a
  default Pylons setup and quite frankly I've not had any issues despite
  taking no precautions.
 
  My only possible explanation is that either a) Nginx makes some attempt
  to track sessions itself and always passes the same IP back to the same
  backend Pylons process or b) Pylons automagically makes it work.
 
  Either way I'd like to feel a little more certain about this.

 Just to clarify: I'm not load balancing across multiple servers, just
 multiple Pylons backends on the same machine.


It definitely doesn't unless you're using the hashing thing...

We just excised sessions from our app altogether, we only really
stored authentication data in there so we moved it to a cookie. Now we
just randomly send requests to any server that's up, and that works
quite well.

-bob

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: implementing a scalable (to multiple processors and multiple servers) Pylons webapp

2007-08-24 Thread Pekka Jääskeläinen

 Apache 2.2 has a mod_proxy_balancer. If performance is a concern, you
 should go with the CherryPy WSGI server.

 use = egg:PasteScript#cherrypy

 instead of

 use egg:Paste#httpserver



This didn't work, I changed the line

use = egg:Paste#http
to
use egg:Paste#cherrypy

Even though I just installed CherryPy, I got error:

LookupError: Entry point 'cherrypy' not found in egg 'Paste' (dir:
/usr/lib/python2.5/site-packages/Paste-1.4-py2.5.egg; protocols:
paste.server_factory, paste.server_runner; entry_points: )

when trying to start paster serve. I've had the same trouble when applying
any kind of
filter(?) (for example the profiler or the thread watcher) with Paste: the
modules are not found.

How to add more search paths for Paster in the Pylons conf?

Beaker has support for using a database or a memcached backend,
 though the docs on how to do this seem to be currently lacking.


Sounds good, but a bit useless if there's no directions for how to take
advantage of the feature. Should I take a look at the Beaker sources and
maybe
write the howto myself? Can you point me to the right source code spot?

-- 
--PJ

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: implementing a scalable (to multiple processors and multiple servers) Pylons webapp

2007-08-24 Thread Pekka Jääskeläinen
On 8/25/07, Cliff Wells [EMAIL PROTECTED] wrote:

 My only possible explanation is that either a) Nginx makes some attempt
 to track sessions itself and always passes the same IP back to the same
 backend Pylons process or b) Pylons automagically makes it work.


...or c) you don't use much the session data storage and you've been lucky.

On the other hand... if session data is always stored to the disk to the
same
directory and location and loaded on each request, multiple server processes
accessing
the same data should actually work quite fine. To scale this to multiple
server machines
one would need a networked file system mount point in which to store the
session data.

However, I'd like to avoid using the disk as much as possible.

-- 
--PJ

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: implementing a scalable (to multiple processors and multiple servers) Pylons webapp

2007-08-24 Thread Cliff Wells

On Sat, 2007-08-25 at 01:46 +0300, Pekka Jääskeläinen wrote:
 On 8/25/07, Cliff Wells [EMAIL PROTECTED] wrote:
 My only possible explanation is that either a) Nginx makes
 some attempt
 to track sessions itself and always passes the same IP back to
 the same
 backend Pylons process or b) Pylons automagically makes it
 work.
 
 ...or c) you don't use much the session data storage and you've been
 lucky.

I think I'd have had to have been *much* luckier than I can take credit
for ;-)

 On the other hand... if session data is always stored to the disk to
 the same directory and location and loaded on each request, multiple
 server processes accessing the same data should actually work quite
 fine.

This seems the likely answer.

  To scale this to multiple server machines one would need a networked
 file system mount point in which to store the session data.

 However, I'd like to avoid using the disk as much as possible. 

Memcached seems the easiest (and probably best) solution.  As Philip
mentions, however, it isn't well-documented how to use Beaker with
Memcached.  If you decide to go this route, maybe update the wiki?

Regards,
Cliff


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: implementing a scalable (to multiple processors and multiple servers) Pylons webapp

2007-08-24 Thread Cliff Wells

On Sat, 2007-08-25 at 01:42 +0300, Pekka Jääskeläinen wrote:
 Apache 2.2 has a mod_proxy_balancer. If performance is a
 concern, you
 should go with the CherryPy WSGI server. 
 
 use = egg:PasteScript#cherrypy
 
 instead of
 
 use egg:Paste#httpserver
 
 
 This didn't work, I changed the line
 
 use = egg:Paste#http
 to
 use egg:Paste#cherrypy

This is wrong AFAIK.  I'm using CP's wsgiserver (which is a standalone
app and included with Paste, so you don't actually need to install CP3,
although you certainly can), and this is my entry:

[server:main]
# use = egg:Paste#http
use = egg:PasteScript#cherrypy

Note PasteScript vs Paste.

As an aside, my light testing with ab showed CP3's wsgiserver to be
considerably faster than Paste's http server, but also seemed to fail
under load slightly more often (more failed requests, not crashes).

Regards,
Cliff




--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: implementing a scalable (to multiple processors and multiple servers) Pylons webapp

2007-08-24 Thread Pekka Jääskeläinen
On 8/25/07, Cliff Wells [EMAIL PROTECTED] wrote:

 This is wrong AFAIK.  I'm using CP's wsgiserver (which is a standalone
 app and included with Paste, so you don't actually need to install CP3,
 although you certainly can), and this is my entry:

 [server:main]
 # use = egg:Paste#http
 use = egg:PasteScript#cherrypy

 Note PasteScript vs Paste.



This works. Thank you.

As an aside, my light testing with ab showed CP3's wsgiserver to be
 considerably faster than Paste's http server, but also seemed to fail
 under load slightly more often (more failed requests, not crashes).


OK. Then it's a no go. Reliability first.

BTW. Have you used the profiling middleware with paster? Last
time I tried, the profiling decorator didn't work.

-- 
--PJ

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---



Re: implementing a scalable (to multiple processors and multiple servers) Pylons webapp

2007-08-24 Thread Peter Hansen

On 8/24/07, Pekka Jääskeläinen [EMAIL PROTECTED] wrote:

  Apache 2.2 has a mod_proxy_balancer. If performance is a concern, you
  should go with the CherryPy WSGI server.
 
  use = egg:PasteScript#cherrypy
 
  instead of
 
  use egg:Paste#httpserver


 This didn't work, I changed the line

 use = egg:Paste#http
 to
 use egg:Paste#cherrypy

  Even though I just installed CherryPy, I got error:

Note it's egg:PasteScript in the above, not just egg:Paste.

-Peter

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
pylons-discuss group.
To post to this group, send email to pylons-discuss@googlegroups.com
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
-~--~~~~--~~--~--~---