我现在正在学习flask和PyMongo,遇到了ChangeStreams。我确实了解ChangeStreams是如何工作的,但我只在Node和Express中使用过它们。我已在我的Flask应用程序中实现了ChangeStreams,如下所示:
with ms.db.collection.watch() as stream:
for change in stream:
print(change)
在官方文档页面上,它说这是一种阻止方法。但是我该如何使它成为无阻塞的呢?因为当前我的ChangeStream逻辑位于不同的文件中,我将其导入server.py文件。因此,当它从未经过导入,而Flask应用程序根本无法启动时。下面是我的server.py
from flask import Flask, render_template, request
import mongo_starter as ms
import changestream as cs
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
if __name__ == "__main__":
app.run(host="0.0.0.0", port="5000")
下面是我的ChangeStream.py
import mongo_starter as ms
with ms.db.collection.watch() as stream:
for change in stream:
print(change)
下面是我的MongoStarter.py,它实际上启动了到Mongo的连接
import pymongo
import mongo_config as mc
print(mc.data_header)
try:
print('Connecting to Database...')
mongo_client = pymongo.MongoClient(mc.mongo_url)
db = mongo_client['PyMongo']
collection = db['Test Data']
print("Connection to Database Successful!")
except pymongo.errors.InvalidURI:
print('Error Connecting to Database')
当我使用nodemon运行应用程序时,它会将以下内容打印到输出中
[nodemon] restarting due to changes...
[nodemon] starting `python server.py`
----------------- MONGO CONNECTION LOG --------------------
Connecting to Database...
Connection to Database Successful!
因此,它实际上从未经过变更流方法。如何使它以异步方式工作?我已经看过asyncio,但想看看是否有任何方法可以在不使用asyncio的情况下实现它
目前没有回答
相关问题 更多 >
编程相关推荐