So given the example below from the book, I would add all the controller
functions that does database read to read_only_actions list? I would have
to continuously maintain this list as my application grows. Is this the
right approach?

if request.function in read_only_actions:
   db = DAL(sample(['mysql://...1','mysql://...2','mysql://...3'], 3))
elif request.action in read_only_actions:
   db = DAL(shuffle(['mysql://...1','mysql://...2','mysql://...3']))
else:
   db = DAL(sample(['mysql://...3','mysql://...4','mysql://...5'], 3))


where 1,2,3 are slaves and 3,4,5 are masters.

On Jan 6, 2018 3:54 AM, "Dave S" <snidely....@gmail.com> wrote:



On Friday, January 5, 2018 at 7:50:28 PM UTC-8, CDA wrote:
>
> How does web2py select a database to connect to based on the http request
> content? Is it feasible to connect to different databases depending on
> whether it is a read request or a write request? Can you provide example on
> how to do this?
>
>
I would expect that the http request wouldn't directly select a database.
Instead, your controller would know if a select() was being done to satisfy
the request (typical for HTTP GET, but often needed for other reasons), or
an insert or update (often an HTTP POST or HTTP PUT), or a delete (such as
for an HTTP DELETE).  But it's your controller that decides what type of DB
operation is required.  AIUI.

/dps



> On Fri, Jan 5, 2018 at 6:35 PM, Anthony <abas...@gmail.com> wrote:
>
>> Do you have doubts about whether it would work? Seems fairly
>> straightforward.
>>
>>
>> On Friday, January 5, 2018 at 3:59:29 PM UTC-5, CDA wrote:
>>>
>>>
>>> Below is an excerpt about horizontal scaling from Chapter 13 in the
>>> book. Has any one successfully implemented this using web2py?
>>>
>>> It is also possible to connect to different databases depending on the
>>> requested action or controller. In a master-slave database configuration,
>>> *some* *action performs only a read* and *some performs both read/write*.
>>> The former can safely connect to a slave db server, while the latter should
>>> connect to a master. So you can do:
>>>
>>>
>>> 1
>>> 2
>>> 3
>>> 4
>>> 5
>>> 6
>>>
>>> if request.function in read_only_actions:
>>>    db = DAL(sample(['mysql://...1','mysql://...2','mysql://...3'], 3))elif 
>>> request.action in read_only_actions:
>>>    db = DAL(shuffle(['mysql://...1','mysql://...2','mysql://...3']))else:
>>>    db = DAL(sample(['mysql://...3','mysql://...4','mysql://...5'], 3))
>>>
>>>
>>> where 1,2,3 are slaves and 3,4,5 are masters.
>>>
>> --
>> Resources:
>> - http://web2py.com
>> - http://web2py.com/book (Documentation)
>> - http://github.com/web2py/web2py (Source code)
>> - https://code.google.com/p/web2py/issues/list (Report Issues)
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "web2py-users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to web2py+un...@googlegroups.com.
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to