я знаю, что есть несколько вопроса о том, как иметь дело с колбой «работать вне контекста приложения», но я не мог заставить их работать для меняколба 0,10 Монго работающих вне контекста приложения
У меня есть длинный ход mongo и планируются к запуску через регулярные интервалы с помощью apscheduler. Ниже представлена моя структура приложения, но задачи не выполняются с помощью «RuntimeError: работа вне контекста приложения». ihttp: //flask.pocoo.org/docs/patterns/sqlite3/ имеет пример использования новой флэшки. Но интересно, может ли кто-нибудь сообщить о том, как правильно сохранить соединение mongodb по всему миру и поделиться этим соединением в apscheduler.
__init.py__
from app import create_app
app.py
from flask import Flask, request, render_template,g
from .extention import mongo, redis, sched
def create_app(config=None):
"""Create a Flask app."""
app = Flask(__name__)
configure_extensions(app)
return app
def configure_extensions(app):
mongo.init_app(app) # initialise mongo connection from the config
redis.init_app(app)
from schedule_tasks import *
extention.py
from flask.ext.pymongo import PyMongo
mongo = PyMongo()
from apscheduler.scheduler import Scheduler
config = {'apscheduler.jobstores.file.class': 'apscheduler.jobstores.shelve_store:ShelveJobStore',
'apscheduler.jobstores.file.path': '/tmp/sched_dbfile'}
sched = Scheduler(config)
from flask.ext.redis import Redis
redis = Redis()
schedule_tasks.py
from .extention import mongo
@sched.interval_schedule(minutes=1)
def long_running_queries():
## mongo agg query ##
mongo.db.command("aggregate", "collection", pipeline = "some query")
sched.start()
sched.print_jobs()
Какая линия бросает RuntimeError? Можете ли вы поместить полную трассировку стека? –
error i get is "raise RuntimeError (« работает вне контекста приложения »)« Файл «schedule_tasks.py», строка 5, в монго – Linus