I separately had the same problem recently and created a github issue 
<https://github.com/web2py/web2py/issues/1999>. If this got implemented 
please close that issue.

On Sunday, July 15, 2018 at 2:17:25 PM UTC-5, Massimo Di Pierro wrote:
>
> Good catch. Will implement this.
>
> On Wednesday, 20 June 2018 14:45:54 UTC+2, Bart wrote:
>>
>> I have found a workaround for this issue.
>> The root cause is probably something in the pyDal connector or psycopg2 
>> or threading. I leave the finding of that to the experts.
>>
>> The workaround is to add code to gluon/scheduler.py to test the 
>> connection before the rest of the Scheduler.send_heartbeat() function is 
>> executed.
>> If the connection-test fails, a new one is set up:
>> Insert this code at the top of the Scheduler.send_heartbeat() function
>>
>> if self.db_thread:
>>     # BKR 20180612 check if connection still works, if not -> throw away 
>> self.db_thread and force reconnect
>>     try:
>>         x = self.db_thread(self.db_thread.scheduler_worker.worker_name == 
>> self.worker_name).select()
>>     except self.db_thread._adapter.connection.OperationalError:
>>         self.db_thread = None
>>
>>
>> With this addition, the scheduler works okay.
>>
>>
>> Op woensdag 6 juni 2018 21:26:40 UTC+2 schreef Bart:
>>>
>>> For a new application, i have installed web2py 2.16.1 under python 3.6 
>>> and using psycopg2 2.7.4 for postgresql access.
>>>
>>> Everything is working okay, except the web2py scheduler.
>>>
>>> After successfull execution of the first task, the scheduler gives an 
>>> error in the send_heartbeat function.
>>> The task output is correctly stored in the database, with status 
>>> COMPLETED. The transaction is committed.
>>>
>>> But then in the first heartbeat after completion, the  error below is 
>>> thrown:
>>>
>>> Looks like the database connection is lost unexpected.
>>>
>>> The strange thing is that this is only happening with psycopg2. When the 
>>> PG8000 connector is used, everything is working fine.
>>> I have tested this on my development system (MacBook)
>>>
>>> On my production system under Ubuntu 16.04, the same thing is happening. 
>>>
>>> Does anyone have a clue?
>>>
>>> The error:
>>>
>>> ERROR:web2py.scheduler.MyMac.local#21060:Error retrieving status
>>> Exception in thread Thread-30:
>>> Traceback (most recent call last):
>>>   File "/Users/me/PycharmProjects/myapp/web2py/gluon/scheduler.py", line 
>>> 1168, in send_heartbeat
>>>     mybackedstatus = db(sw.worker_name == 
>>> self.worker_name).select().first()
>>>   File 
>>> "/Users/me/PycharmProjects/myapp/venv/lib/python3.6/site-packages/pydal/objects.py",
>>>  
>>> line 2250, in select
>>>     return adapter.select(self.query, fields, attributes)
>>>   File 
>>> "/Users/me/PycharmProjects/myapp/venv/lib/python3.6/site-packages/pydal/adapters/base.py",
>>>  
>>> line 762, in select
>>>     return self._select_aux(sql, fields, attributes, colnames)
>>>   File 
>>> "/Users/me/PycharmProjects/myapp/venv/lib/python3.6/site-packages/pydal/adapters/base.py",
>>>  
>>> line 718, in _select_aux
>>>     rows = self._select_aux_execute(sql)
>>>   File 
>>> "/Users/me/PycharmProjects/myapp/venv/lib/python3.6/site-packages/pydal/adapters/base.py",
>>>  
>>> line 712, in _select_aux_execute
>>>     self.execute(sql)
>>>   File 
>>> "/Users/me/PycharmProjects/myapp/venv/lib/python3.6/site-packages/pydal/adapters/__init__.py",
>>>  
>>> line 67, in wrap
>>>     return f(*args, **kwargs)
>>>   File 
>>> "/Users/me/PycharmProjects/myapp/venv/lib/python3.6/site-packages/pydal/adapters/base.py",
>>>  
>>> line 412, in execute
>>>     rv = self.cursor.execute(command, *args[1:], **kwargs)
>>> psycopg2.OperationalError: server closed the connection unexpectedly
>>> This probably means the server terminated abnormally
>>> before or while processing the request.
>>>
>>>
>>> During handling of the above exception, another exception occurred:
>>>
>>> Traceback (most recent call last):
>>>   File 
>>> "/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py",
>>>  
>>> line 916, in _bootstrap_inner
>>>     self.run()
>>>   File "/Users/me/PycharmProjects/myapp/web2py/gluon/scheduler.py", line 
>>> 637, in run
>>>     self.send_heartbeat(counter)
>>>   File "/Users/me/PycharmProjects/myapp/web2py/gluon/scheduler.py", line 
>>> 1239, in send_heartbeat
>>>     db.rollback()
>>>   File 
>>> "/Users/me/PycharmProjects/myapp/venv/lib/python3.6/site-packages/pydal/base.py",
>>>  
>>> line 704, in rollback
>>>     self._adapter.rollback()
>>>   File 
>>> "/Users/me/PycharmProjects/myapp/venv/lib/python3.6/site-packages/pydal/adapters/__init__.py",
>>>  
>>> line 56, in wrap
>>>     return f(*args, **kwargs)
>>>   File 
>>> "/Users/me/PycharmProjects/myapp/venv/lib/python3.6/site-packages/pydal/adapters/base.py",
>>>  
>>> line 865, in rollback
>>>     return self.connection.rollback()
>>> psycopg2.InterfaceError: connection already closed
>>>
>>

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