Запись журнала из Python в базу данных Mongo - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь записать журнал из Python в базу данных Mongo.Мой код выполняет и создает базу данных как DSLogSummary, но не записывает записи в коллекцию:

from apscheduler.schedulers.blocking import BlockingScheduler
from pymongo import MongoClient
from pymongo import ASCENDING
from pytz import utc
import datetime

client = MongoClient()
db = client.DSLogSummary
collection = db.ds_jobLogEntry
collection.ensure_index([("timestamp", ASCENDING)])

def log(msg):
    entry = {}
    entry['timestamp'] = datetime.datetime.utcnow()
    entry['msg'] = msg
    collection_id = collection.insert_one(entry).inserted_id

def job_test():
    print ("Hello World")
    log('Job executed')

jobstores = {
     'mongo': {'type': 'mongodb'},
}

sched = BlockingScheduler()
sched.configure(jobstores=jobstores, timezone=utc)
sched.add_job(job_test, trigger='cron', month='*', hour='*', minute = '*', second='*/5')
sched.start()

Вывод: Hello World Hello World Hello World Hello World Hello World Hello World

enter image description here

1 Ответ

0 голосов
/ 24 сентября 2018

В зависимости от вашего варианта использования - запись журнала - по моему мнению, вам будет лучше, если вы будете использовать базу данных, ориентированную на время, больше, чем база данных MongoDB.[no-sql DB]

Используя MongoDB, вы рискуете, что события, видимые внутри БД, не будут отражать реальность, поскольку асинхронная запись данных.

Вы можете взглянуть здесь и здесь , чтобы узнать, почему MongoDb не подходит для временных рядов ...

В вашем случае, InfluxDB может быть, лучший выбор (или Mysql )

...