python - SQLAlchemy returns stale data in celery tasks -


my current setup include

flask, flask-sqlalchemy, celery

now problem running database queries inside celery tasks gives stale data i.e if ask last record table second last while last entry inserted 10-15 minutes before doing query , see exceptions these.

operationalerror("(operationalerror) (2006, \'mysql server has gone away\')",)'

following trackback

  file "/home/sys_user/repo/my_app/app/tasks/reminders.py", line 63, in run     config = reminder.query.filter_by(id=reminder_id).first()   file "/home/sys_user/envs/flask/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2341, in first     ret = list(self[0:1])   file "/home/sys_user/envs/flask/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2208, in __getitem__     return list(res)   file "/home/sys_user/envs/flask/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2412, in __iter__     return self._execute_and_instances(context)   file "/home/sys_user/envs/flask/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2427, in _execute_and_instances     result = conn.execute(querycontext.statement, self._params)   file "/home/sys_user/envs/flask/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 729, in execute     return meth(self, multiparams, params)   file "/home/sys_user/envs/flask/local/lib/python2.7/site-packages/sqlalchemy/sql/elements.py", line 321, in _execute_on_connection     return connection._execute_clauseelement(self, multiparams, params)   file "/home/sys_user/envs/flask/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 826, in _execute_clauseelement     compiled_sql, distilled_params   file "/home/sys_user/envs/flask/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 958, in _execute_context     context)   file "/home/sys_user/envs/flask/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1160, in _handle_dbapi_exception     exc_info   file "/home/sys_user/envs/flask/local/lib/python2.7/site-packages/sqlalchemy/util/compat.py", line 199, in raise_from_cause     reraise(type(exception), exception, tb=exc_tb)   file "/home/sys_user/envs/flask/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 951, in _execute_context     context)   file "/home/sys_user/envs/flask/local/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 436, in do_execute     cursor.execute(statement, parameters)   file "/home/sys_user/envs/flask/local/lib/python2.7/site-packages/mysqldb/cursors.py", line 205, in execute     self.errorhandler(self, exc, value)   file "/home/sys_user/envs/flask/local/lib/python2.7/site-packages/mysqldb/connections.py", line 36, in defaulterrorhandler     raise errorclass, errorvalue 

following celery_app.py

from app import app flask_app, db celery.signals import worker_process_init  def make_celery(app=none):     celery = celery()     celery.conf.update(flask_app.config)     celery.config_from_object(celeryconfig)      taskbase = celery.task      class contexttask(taskbase):         abstract = true          def __call__(self, *args, **kwargs):             flask_app.app_context():                 return taskbase.__call__(self, *args, **kwargs)      db.init_app(flask_app)     celery.task = contexttask     return celery   celery_instance = make_celery()   @worker_process_init.connect def celery_worker_init_db(**_):     db.init_app(flask_app) 

some tasks defined.

class remindertask(task):     ignore_result = true      def run(self, data):         = reminder.query.filter_by(id=int(data['reminder_id'])).first()         a.send_reminders() 

this same question got answered @ sqlalchemy google group

based on ended implementing solution ask mentions here. haven't seen these issues since then.


Comments

Popular posts from this blog

javascript - Google App Script ContentService downloadAsFile not working -

javascript - Function overwritting -

c# - Exception when attempting to modify Dictionary -