我正在構建一個具有推送事件的網站,因此需要Gevent websockets才能工作,但其餘代碼被阻塞,因爲我真的不知道如何使其異步。在封鎖代碼中使用Gevent
因此,在使用Gevent和阻塞代碼時是否存在一些問題? 我使用猴子patch_all和象這樣啓動服務器,再加上nginx的代理通隱藏的端口號:
WSGIServer(('127.0.0.1', 8000), app).serve_forever()
如果我沒理解好,做這一切將確保阻止代碼流將通過Greenlets進行合作?
像我這個簡單的代碼(主頁的路由定義),其獲取來自帖子集合中的所有項目,將其保存在數據庫VAR和飼料到render_template(的index.html)爲分貝是那麼將在後面循環:
# front page
def index():
database = posts.find()
return render_template('index.html', db=database)
這實際上是index.html的:
{% extends 'layout.html' %}
{% block body %}
<div class=post>
{% for post in db %}
<h4><a href="/post/{{ post._id }}/{{ post.slug }}"> {{ post.title }} </a></h4>
{% endfor %}
</div>
{% endblock %}
這段代碼是否可以安全地與Gevent一起使用,還是應該依賴別的東西?
如果不是我該怎麼做才能使它成爲異步?片段循環? 「異步」數據庫調用,如posts.find()?
看起來好像你在正確的軌道上。 – kkurian