我有一个观点:Django的似乎asyncroniously出于某种原因
from app.models import Product, Sell
def buy(request):
product = Product.objects.filter(user__isnull=True).first()
if product:
product.user = request.user
product.save()
Sale.objects.create(user=request.user, product=product)
我只有一个产品实例中尚未售出的数据库(分配给用户)
如果我运行这个在浏览器控制台片JS的:
for (i=1;i<100;i++) {
$.get('/buy/', function(data) {console.log(data)});
}
在结果我有售对象的随机量(从1到5)用户与所述一个相同产品相关。 user.sale_set.count()
打印3,但也有
之前只是它不应该因为销售应该没有,如果产品已经有了一个用户.filter(user__isnull=True)
所以,这似乎是可能的Django工程异步出于某种原因产生,还是我只是一个白痴?
对我来说这是非常奇怪的新行为,可能是我的gunicorn systemd设置可以帮助吗?
[Unit]
Description=my_project daemon
After=network.target
[Service]
User=root
Group=nginx
WorkingDirectory=/www/my_project
;ExecStart=/env/my_project/bin/gunicorn --workers 3 --bind unix:/www/my_project/myproject.sock core.wsgi:application
ExecStart=/env/my_project/bin/gunicorn core.wsgi --timeout 10000 --workers=25 -b 0.0.0.0:8000
[Install]
WantedBy=multi-user.target
注意,_request_是异步的JavaScript发送此行为。 Django是同步的,但使用多线程和进程可以处理并发请求。 – knbk