我使用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连接池查找池解决方案。您应该从中看到一些可观的性能。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top