@michele, @niphlod

I tried db.commit() and then waiting for more than wait_timeout (300 
seconds). I also tried db._adapter.reconnect(). Neither worked for me: 
MySQL on PA still raises OperationalError: (2013, 'Lost connection to MySQL 
server during query') after the wait. (If I wait just under 300 seconds, it 
works fine.) Any ideas? Could it be a problem with the MySQL adapter? My 
test code:


import time

def insert_user():
    db.auth_user.insert(email='t...@test.com')

def user_count():
    return db(db.auth_user.id<50).count()

wait = 320

insert_user()
db.commit()

print "Sleeping for {} seconds.".format(wait)
time.sleep(wait)

db._adapter.reconnect()
print "{} users found".format(user_count())

thanks and best regards -Ricardo


On Tuesday, September 24, 2013 5:16:20 PM UTC-5, Michele Comitini wrote:
>
> Did you remember to do a commit at each round?
>
> A long running script / daemon can do:
>
> db=DAL...
> <define tables>
>
> while True:
>    <do stuff with DAL>
>    db.commit()
>    sleep(1000) # <- just for exampl i.e. don't do anything for a long time
>
> The DAL pushes the connection "back to sleep in the pool" [ :-) ] when 
> there is a commit.
> When one starts operating on the DAL instance (db) a connection is  taken 
> from the pool and *tested* for being functioning.
> If the connection is dead it's replaced by a new one.  Then a transaction 
> is started on that connection.
>
>  mic
>
>
> 2013/9/24 Ricardo Cárdenas <ricardo....@gmail.com <javascript:>>
>
>> Derek, thanks for your suggestion. Which is the preferred way to reopen 
>> the connection and define the tables?
>>
>> My db.py contains
>>
>> db = DAL(connection_string, options...)
>> db.define_table('table1', Field('f1' ...), Field('f2'...))
>> db.define_table(...)
>> db.define_table(...)
>> ...
>>
>> So ideally I wouldn't have to repeat this code in my script. Is it best I 
>> break out the DAL/define_tables calls into a file that I import both in my 
>> db.py and in my script.py?
>>
>>
>>
>> On Tuesday, September 24, 2013 4:45:09 PM UTC-5, Derek wrote:
>>>
>>> Each time you need to do work, you should open a new connection. You'd 
>>> think there is a large overhead in creating a connection, but there isn't.
>>>
>>> On Tuesday, September 24, 2013 2:33:24 PM UTC-7, Ricardo Cárdenas wrote:
>>>>
>>>> I have a web2py app running fine on pythonanywhere. I have a minor 
>>>> problem - I think I understand why it is happening, but would seek your 
>>>> advice as to how best to fix it.
>>>>
>>>> The app itself works fine. But I also run a scheduled task using PA's 
>>>> scheduler, by executing "python web2py.py -S appname -M -R 
>>>> appname/private/myscript.py". The script does some processing for a few 
>>>> minutes, and only then starts writing to the MySQL database.
>>>>
>>>> PA's MySQL database has wait_timeout set to 120 seconds. If my initial 
>>>> processing is less than wait_timeout, everything works fine. But when 
>>>> my initial processing exceeds wait_timeout, I get a 'Lost Connection 
>>>> to MySQL' error when my code tries to write to the database. I am 
>>>> using connection pooling in the call to the DAL, but I guess the 
>>>> connection 
>>>> instantiated by db.py file is not automatically kept warm nor is it 
>>>> automatically replaced by another good connection when it expires.
>>>>
>>>> What's the best practice here:
>>>>
>>>>    - Is there a preferred way to ping the database every once in a 
>>>>    while?
>>>>    - Is there a preferred way to detect an expired DAL connection, and 
>>>>    to request another one? 
>>>>
>>>> Thanks for any suggestions or pointers. Sorry if this is in the docs, 
>>>> couldn't find it. warm regards -Ricardo
>>>>
>>>>  -- 
>> 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 <javascript:>.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>

-- 
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/groups/opt_out.

Reply via email to