我已经使用MongoDB驱动程序创建了Cosmos DB帐户,并希望从flask服务器访问它。这是我正在尝试的最简单的例子:
from flask import Flask
from pymongo import MongoClient
url = 'monbodb://<my_db_name>.documents.azure.com:10255/?ssl=true
username = '<my_db_name>'
password = '<my_password>'
client = MongoClient(url, username=username, password=password)
app = Flask(__name__)
@app.route('/ping', methods=['GET'])
def ping():
return 'pong!'
if __name__ == '__main__':
app.run()
我使用git部署它,最后它表示部署成功。但真正的应用程序已崩溃,因为网页无法访问,并说“由于发生内部服务器错误,无法显示该页面。”。我想问题是使用SSL,因为删除'/?ssl = true'确实允许访问应用程序网页,但是这种情况下DB无法访问!有什么问题以及如何解决?
答案 0 :(得分:1)
我试图在我的天蓝色烧瓶网页应用中访问我的mongo db
,它对我来说效果很好。您可以参考我的工作步骤和代码。
<强> view.py 强>
from datetime import datetime
from flask import render_template
from jaygongflask import app
import pymongo
@app.route('/mongo')
def mongo():
uri = "mongodb://<account name>:<your account key>@<account name>.documents.azure.com:10255/?ssl=true&replicaSet=globaldb"
client = pymongo.MongoClient(uri)
db = client['db']
coll = db['coll']
doc= coll.find_one()
return render_template(
'mongo.html',
title='Mongo',
message='Mongo query result.',
queryResult = doc
)
发布您的烧瓶项目并添加web.config
。
<强> 的web.config: 强>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="WSGI_HANDLER" value="<Your Project Name>.app"/>
<add key="PYTHONPATH" value="D:\home\site\wwwroot"/>
<add key="WSGI_LOG" value="D:\home\LogFiles\wfastcgi.log"/>
</appSettings>
<system.webServer>
<handlers>
<add name="PythonHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="D:\home\Python361x64\python.exe|D:\home\Python361x64\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/>
</handlers>
</system.webServer>
</configuration>
切换到Kudu CMD并命令cd Python361x64
和touch get-pip.py
并通过编辑按钮将网址https://bootstrap.pypa.io/get-pip.py
的内容复制到get-pip.py
,然后运行{{1}安装pip工具。
这里,我使用python361x64扩展名。所以我在KUDU中运行命令python get-pip.py
。
获取查询结果
访问网址python -m pip install pyodbc
。
更多部署详情,请参阅此tutorial。
希望它对你有所帮助。