import signal
import multiprocessing
from time import sleep, process_time
class MainProcess(object):
def __init__(self):
signal.signal(signal.SIGTERM, self.stop)
signal.signal(signal.SIGINT, self.stop)
self._event_stop = multiprocessing.Event()
def start(self):
print("Parser started")
while not self._event_stop.is_set():
print(process_time())
sleep(1)
print("Parser stopped")
exit(0)
def stop(self, signum, frame):
if not self._event_stop.is_set():
print("Stop command was arrived")
self._event_stop.set()
if __name__ == "__main__":
MainProcess().start()
idm
в коде и в запросе не увидел ничего.Но про mongo я знаю меньше чем ничего, так что может это что-то специфическое?
Но глядя на код, вижу следующее:
подключились к базе, получили коллекцию (судя по названиям), затем идёт нечто мне не совсем понятное:
В доке на mongo написано, что метод
find
возвращает курсор (указатель на первый найденный документ в базе). И в то же время сказано, что он возвращает их один за одним. Судя по примерам, мы получим что-то вроде множества всех документов базы, но из них в каждом словаре будет показан только ключid
с каким-то значением в каждом из словарей.А дальше это множество в вашем коде просто перекладывается в цикле в список.
У меня нет mongo под рукой, чтобы попробовать.
Думаю, что если в каком-то из документов нет ключа
id
, оно либо этот документ не вернет вовсе, молча, либо вернётся ошибка. А вы пробовали, что получается?P.s. Кстати, если
id
не уникальны для этой выборки, иfind
возвращает таки множество, может произойти любопытный казус.