Hi Guys,
We've noticed that celerybeat-mongo doesn't handle auto-reconnect properly when there are some intermediate connection problems with MongoDB. This causes celery beat to stop working and the only way to get it back up is to do the manual restart.
Below is the log traces, Please let me know if you need any additional info and what could be the solution to this problem.
Thanks,
Oleksiy
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/bin/celery", line 11, in
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: sys.exit(main())
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: Traceback (most recent call last):
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler CRITICAL: beat raised exception <class 'pymongo.errors.AutoReconnect'>: AutoReconnect('cluster1-shard-00-00-ho8p9.mongodb.net:27017: [Errno 111] Connection refused',) Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/celery/apps/beat.py", line 109, in start_scheduler service.start() File "/usr/local/lib/python2.7/site-packages/celery/beat.py", line 588, in start interval = self.scheduler.tick() File "/usr/local/lib/python2.7/site-packages/celery/beat.py", line 291, in tick not self.schedules_equal(self.old_schedulers, self.schedule)): File "/usr/local/lib/python2.7/site-packages/celerybeatmongo/schedulers.py", line 132, in schedule self._schedule = self.get_from_database() File "/usr/local/lib/python2.7/site-packages/celerybeatmongo/schedulers.py", line 123, in get_from_database self.sync() File "/usr/local/lib/python2.7/site-packages/celerybeatmongo/schedulers.py", line 138, in sync entry.save() File "/usr/local/lib/python2.7/site-packages/celerybeatmongo/schedulers.py", line 79, in save self._task.save() File "/usr/local/lib/python2.7/site-packages/mongoengine/document.py", line 377, in save self.ensure_indexes() File "/usr/local/lib/python2.7/site-packages/mongoengine/document.py", line 894, in ensure_indexes collection.create_index(fields, background=background, **opts) File "/usr/local/lib/python2.7/site-packages/pymongo/collection.py", line 1958, in create_index self.__create_index(keys, kwargs, session, **cmd_options) File "/usr/local/lib/python2.7/site-packages/pymongo/collection.py", line 1847, in __create_index with self._socket_for_writes() as sock_info: File "/usr/local/lib/python2.7/contextlib.py", line 17, in enter return self.gen.next() File "/usr/local/lib/python2.7/site-packages/pymongo/mongo_client.py", line 1058, in _get_socket with server.get_socket(self.__all_credentials) as sock_info: File "/usr/local/lib/python2.7/contextlib.py", line 17, in enter return self.gen.next() File "/usr/local/lib/python2.7/site-packages/pymongo/pool.py", line 1004, in get_socket sock_info = self._get_socket_no_auth() File "/usr/local/lib/python2.7/site-packages/pymongo/pool.py", line 1044, in _get_socket_no_auth sock_info = self._check(sock_info) File "/usr/local/lib/python2.7/site-packages/pymongo/pool.py", line 1095, in _check return self.connect() File "/usr/local/lib/python2.7/site-packages/pymongo/pool.py", line 972, in connect _raise_connection_failure(self.address, error) File "/usr/local/lib/python2.7/site-packages/pymongo/pool.py", line 283, in _raise_connection_failure raise AutoReconnect(msg) AutoReconnect: cluster1-shard-00-00-ho8p9.mongodb.net:27017: [Errno 111] Connection refused
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/celery/main.py", line 16, in main
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: _main()
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/celery/bin/celery.py", line 322, in main
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: cmd.execute_from_commandline(argv)
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: super(CeleryCommand, self).execute_from_commandline(argv)))
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/celery/bin/celery.py", line 496, in execute_from_commandline
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/celery/bin/base.py", line 275, in execute_from_commandline
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/celery/bin/celery.py", line 488, in handle_argv
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: return self.handle_argv(self.prog_name, argv[1:])
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: return self.execute(command, argv)
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/celery/bin/celery.py", line 420, in execute
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: ).run_from_argv(self.prog_name, argv[1:], command=argv[0])
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/celery/bin/base.py", line 279, in run_from_argv
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: sys.argv if argv is None else argv, command)
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/celery/bin/base.py", line 363, in handle_argv
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: return self(*args, **options)
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/celery/bin/base.py", line 238, in call
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: ret = self.run(*args, **kwargs)
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/celery/bin/beat.py", line 107, in run
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: return beat().run()
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/celery/apps/beat.py", line 81, in run
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: self.start_scheduler()
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/celery/apps/beat.py", line 109, in start_scheduler
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: service.start()
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/celery/beat.py", line 588, in start
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: interval = self.scheduler.tick()
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/celery/beat.py", line 291, in tick
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: not self.schedules_equal(self.old_schedulers, self.schedule)):
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/celerybeatmongo/schedulers.py", line 132, in schedule
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: self._schedule = self.get_from_database()
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/celerybeatmongo/schedulers.py", line 123, in get_from_database
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/celerybeatmongo/schedulers.py", line 138, in sync
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: self.sync()
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/celerybeatmongo/schedulers.py", line 79, in save
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: entry.save()
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: self._task.save()
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/mongoengine/document.py", line 377, in save
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: self.ensure_indexes()
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/mongoengine/document.py", line 894, in ensure_indexes
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: collection.create_index(fields, background=background, **opts)
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/pymongo/collection.py", line 1958, in create_index
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/pymongo/collection.py", line 1847, in __create_index
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: self.__create_index(keys, kwargs, session, **cmd_options)
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: with self._socket_for_writes() as sock_info:
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/contextlib.py", line 17, in enter
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: return self.gen.next()
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/pymongo/mongo_client.py", line 1058, in _get_socket
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/contextlib.py", line 17, in enter
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: with server.get_socket(self.__all_credentials) as sock_info:
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/pymongo/pool.py", line 1004, in get_socket
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: sock_info = self._get_socket_no_auth()
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: return self.gen.next()
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/pymongo/pool.py", line 1044, in _get_socket_no_auth
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: sock_info = self._check(sock_info)
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/pymongo/pool.py", line 1095, in _check
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: return self.connect()
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/pymongo/pool.py", line 972, in connect
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: _raise_connection_failure(self.address, error)
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: File "/usr/local/lib/python2.7/site-packages/pymongo/pool.py", line 283, in _raise_connection_failure
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: raise AutoReconnect(msg)
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: pymongo.errors
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: .
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: :
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: AutoReconnect
Mar 28 21:14:45 SCHED_SERVICE_PROD_scheduler WARNING: cluster1-shard-00-00-ho8p9.mongodb.net:27017: [Errno 111] Connection refused