修复 JudgeServer task_number 并发更新的问题
This commit is contained in:
parent
f1f2202731
commit
eab80024a8
|
@ -146,7 +146,7 @@ class JudgeServerHeartbeatAPI(CSRFExemptAPIView):
|
|||
server.service_url = data["service_url"]
|
||||
server.ip = request.ip
|
||||
server.last_heartbeat = timezone.now()
|
||||
server.save()
|
||||
server.save(update_fields=["judger_version", "cpu_core", "memory_usage", "service_url", "ip", "last_heartbeat"])
|
||||
except JudgeServer.DoesNotExist:
|
||||
JudgeServer.objects.create(hostname=data["hostname"],
|
||||
judger_version=data["judger_version"],
|
||||
|
@ -157,8 +157,8 @@ class JudgeServerHeartbeatAPI(CSRFExemptAPIView):
|
|||
service_url=data["service_url"],
|
||||
last_heartbeat=timezone.now(),
|
||||
)
|
||||
# 新server上线 处理队列中的,防止没有新的提交而导致一直waiting
|
||||
process_pending_task()
|
||||
# 新server上线 处理队列中的,防止没有新的提交而导致一直waiting
|
||||
process_pending_task()
|
||||
|
||||
return self.success()
|
||||
|
||||
|
|
|
@ -1,5 +1,13 @@
|
|||
{
|
||||
"update": [
|
||||
{
|
||||
"version": "2019-04-03",
|
||||
"level": "Important",
|
||||
"title": "2019-04-03",
|
||||
"details": [
|
||||
"Fix bugs in judge server scheduler"
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "2019-03-25",
|
||||
"level": "Recommend",
|
||||
|
|
|
@ -25,8 +25,10 @@ def process_pending_task():
|
|||
if cache.llen(CacheKey.waiting_queue):
|
||||
# 防止循环引入
|
||||
from judge.tasks import judge_task
|
||||
data = json.loads(cache.rpop(CacheKey.waiting_queue).decode("utf-8"))
|
||||
judge_task.send(**data)
|
||||
tmp_data = cache.rpop(CacheKey.waiting_queue)
|
||||
if tmp_data:
|
||||
data = json.loads(tmp_data.decode("utf-8"))
|
||||
judge_task.send(**data)
|
||||
|
||||
|
||||
class ChooseJudgeServer:
|
||||
|
@ -40,7 +42,7 @@ class ChooseJudgeServer:
|
|||
for server in servers:
|
||||
if server.task_number <= server.cpu_core * 2:
|
||||
server.task_number = F("task_number") + 1
|
||||
server.save()
|
||||
server.save(update_fields=["task_number"])
|
||||
self.server = server
|
||||
return server
|
||||
return None
|
||||
|
|
Loading…
Reference in New Issue