Python пакет APSscheduler выдает ошибку при запуске планировщика, если mongodb используется в качестве хранилища заданий - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь запустить некоторый код с APScheduler с MongoDB в качестве хранилища заданий. Я скачал pymon go и протестировал его, поэтому он работает. APScheduler будет работать, когда я создаю экземпляр планировщика, но когда я запускаю scheduler.start (), он выдает следующую ошибку:

Traceback (most recent call last):
  File "aps_ro.py", line 56, in <module>
    scheduler.start()
  File "/usr/lib/python3.8/site-packages/apscheduler/schedulers/background.py", line 33, in start
    BaseScheduler.start(self, *args, **kwargs)
  File "/usr/lib/python3.8/site-packages/apscheduler/schedulers/base.py", line 158, in start
    store.start(self, alias)
  File "/usr/lib/python3.8/site-packages/apscheduler/jobstores/mongodb.py", line 57, in start
    self.collection.ensure_index('next_run_time', sparse=True)
  File "/usr/lib/python3.8/site-packages/pymongo/collection.py", line 2028, in ensure_index
    self.__create_index(keys, kwargs, session=None)
  File "/usr/lib/python3.8/site-packages/pymongo/collection.py", line 1881, in __create_index
    with self._socket_for_writes(session) as sock_info:
  File "/usr/lib/python3.8/site-packages/pymongo/collection.py", line 195, in _socket_for_writes
    return self.__database.client._socket_for_writes(session)
  File "/usr/lib/python3.8/site-packages/pymongo/mongo_client.py", line 1266, in _socket_for_writes
    server = self._select_server(writable_server_selector, session)
  File "/usr/lib/python3.8/site-packages/pymongo/mongo_client.py", line 1253, in _select_server
    server = topology.select_server(server_selector)
  File "/usr/lib/python3.8/site-packages/pymongo/topology.py", line 233, in select_server
    return random.choice(self.select_servers(selector,
  File "/usr/lib/python3.8/site-packages/pymongo/topology.py", line 192, in select_servers
    server_descriptions = self._select_servers_loop(
  File "/usr/lib/python3.8/site-packages/pymongo/topology.py", line 208, in _select_servers_loop
    raise ServerSelectionTimeoutError(
pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused

Мой пример кода выглядит следующим образом:

jobstores = {
    'mongo': {'type': 'mongodb'},
    'default': SQLAlchemyJobStore(url='sqlite:///jobs.sqlite')
}
executors = {...}
job_defaults = {...}

scheduler = BackgroundScheduler()
scheduler.configure(jobstores=jobstores, executors=executors, job_defaults=job_defaults, timezone=utc)

@scheduler.scheduled_job(trigger='cron', day_of_week=4, hour=22, minute=21, second=0)
def tester():
    print("hello")

scheduler.start()

1 Ответ

0 голосов
/ 25 апреля 2020

По умолчанию драйвер mongodb python будет подключаться к базе данных на хосте localhost и порту 27017.

. Поэтому вам потребуется:

  • убедитесь, что сервер mongodb работает на той же машине, что и код python, и работает на порте по умолчанию (вы можете легко проверить это, набрав mongo в своей любимой оболочке и проверив, что вы получаете приглашение >, а не ошибка).
  • укажите строку подключения или аргументы подключения, если mongodb работает на другом сервере или на другом порту.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...