Django,Ajax长投票,PostgreSQL:空闲交易
-
25-10-2019 - |
题
我使用Ajax长民意调查和Gevent实施了聊天。要阅读,客户端AJAX更新视图,并与gevent.event.hewait等待更新。
问题:Django在请求开始时(获取会话信息)在请求结束之前,Django打开的PostgreSQL交易才关闭。这些闲置的交易需要很多记忆。
在不关闭请求的情况下关闭PostgreSQL交易的最清洁方法是什么?我目前正在手动发送request_fined信号,但感觉就像是黑客。
解决方案
无论如何,您的操作方式可能是黑客框架内的最佳方法。您是否有任何理由试图将长期插入reports-Response过程中,而不是使用类似的内容 Django socketio?
其他提示
看这里: https://docs.djangoproject.com/en/dev/topics/db/transactions/#django.db.transaction.commit_manlyally
@transaction.commit_manually
def yourview(request):
# do your db actions
transaction.commit()
或者,如果您喜欢上下文经理:
def yourview(request):
...
with transaction.commit_manually():
# do your db actions
...
另外,如果您有内存问题,请使用PostgreSQL连接打开,您应该使用PGBOUNCER或存在的各种Gevent连接池查找池解决方案。您应该从中看到一些可观的性能。
不隶属于 StackOverflow