相关疑难解决方法(0)

django中计数器的原子增量

我试图在Django中以原子方式递增一个简单的计数器.我的代码看起来像这样:

from models import Counter
from django.db import transaction

@transaction.commit_on_success
def increment_counter(name):
    counter = Counter.objects.get_or_create(name = name)[0]
    counter.count += 1
    counter.save()
Run Code Online (Sandbox Code Playgroud)

如果我正确理解Django,这应该将函数包装在事务中并使增量原子化.但它不起作用,并且在计数器更新中存在竞争条件.如何使这些代码成为线程安全的?

python django transactions race-condition

51
推荐指数
5
解决办法
3万
查看次数

跟踪对象的"页面浏览量"或"点击量"的数量?

我确信有人在那里有一个可插拔的应用程序(或教程)近似于此,但我找不到它:我希望能够跟踪特定对象的"视图"数量(就像这里的问题一样)在stackoverflow上有一个"查看计数").

如果用户未登录,我不介意尝试放置cookie(或记录IP),以便他们不会通过刷新页面而无意中运行视图计数; 如果用户已登录,则只允许他们跨会话/浏览器/ IP地址进行一次"查看".我认为我不需要任何比这更好的东西.

我认为最好的方法是使用与我想要跟踪的各种模型分离并使用F表达式(各种类型)的中间件 - 其他关于stackoverlow的问题已提到这个(1)(2)(3) .

但是我想知道这个代码是否已经存在于野外 - 因为我不是最精明的编码器,我相信有人可以做得更好.微笑.

你看到了吗?

django views

36
推荐指数
5
解决办法
3万
查看次数

标签 统计

django ×2

python ×1

race-condition ×1

transactions ×1

views ×1