我有一个Django应用程序来记录自动完成接口的字符序列。每次对服务器进行调用时,参数都会添加到列表中,当用户提交查询时,列表会写入文件。你知道吗
因为我不确定如何在后续调用之间保留列表,所以我依赖于一个全局变量,比如query_logger
。现在我可以用以下方式保存列表:
def log_query(query, completions, submitted=False):
global query_logger
if query_logger is None:
query_logger = list()
query_logger.append(query, completions, submitted)
if submitted:
query_logger = None
虽然这种黑客技术适用于发送请求的单个客户端,但我认为当请求来自多个客户端时,这不是一个稳定的解决方案。我的问题有两个:
最简单(不好)的解决方案是使用一个全局变量。这意味着您需要一些内存位置或数据库来存储此信息
如果您的django服务器是单线程的,那么是的,它将在接收请求时响应请求。如果您使用的是wsgi或其他代理,那么这将变得更加复杂。不管怎样,我认为您应该使用数据库来存储信息。
我遇到了一个类似的问题,并最终使用sqlite临时存储数据,因为这非常简单且易于管理。您需要使用IP地址或创建作为url参数传递的唯一ID,以便在后续请求中标识客户端。
我还安排了一个每日任务(在ubuntu上使用cron)来完成并删除所有未完成的请求(不包括在最后一个小时内启动的请求)。你知道吗
不能为此使用全局变量。你知道吗
正确的答案是使用session——这正是它的用途。你知道吗
相关问题 更多 >
编程相关推荐