kopia lustrzana https://github.com/OpenDroneMap/WebODM
BUG: lock deletion fix
rodzic
abc555cba9
commit
06c570ad7a
|
@ -18,7 +18,7 @@ from webodm import settings
|
||||||
from .celery import app
|
from .celery import app
|
||||||
import redis
|
import redis
|
||||||
|
|
||||||
logger = get_task_logger(__name__)
|
logger = get_task_logger("app.logger")
|
||||||
redis_client = redis.Redis.from_url(settings.CELERY_BROKER_URL)
|
redis_client = redis.Redis.from_url(settings.CELERY_BROKER_URL)
|
||||||
|
|
||||||
@app.task
|
@app.task
|
||||||
|
@ -74,6 +74,7 @@ def setInterval(interval, func, *args):
|
||||||
def process_task(taskId):
|
def process_task(taskId):
|
||||||
lock_id = 'task_lock_{}'.format(taskId)
|
lock_id = 'task_lock_{}'.format(taskId)
|
||||||
cancel_monitor = None
|
cancel_monitor = None
|
||||||
|
delete_lock = True
|
||||||
|
|
||||||
try:
|
try:
|
||||||
task_lock_last_update = redis_client.getset(lock_id, time.time())
|
task_lock_last_update = redis_client.getset(lock_id, time.time())
|
||||||
|
@ -81,6 +82,7 @@ def process_task(taskId):
|
||||||
# Check if lock has expired
|
# Check if lock has expired
|
||||||
if time.time() - float(task_lock_last_update) <= 30:
|
if time.time() - float(task_lock_last_update) <= 30:
|
||||||
# Locked
|
# Locked
|
||||||
|
delete_lock = False
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
# Expired
|
# Expired
|
||||||
|
@ -89,7 +91,7 @@ def process_task(taskId):
|
||||||
# Set lock
|
# Set lock
|
||||||
def update_lock():
|
def update_lock():
|
||||||
redis_client.set(lock_id, time.time())
|
redis_client.set(lock_id, time.time())
|
||||||
cancel_monitor = setInterval(10, update_lock)
|
cancel_monitor = setInterval(5, update_lock)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
task = Task.objects.get(pk=taskId)
|
task = Task.objects.get(pk=taskId)
|
||||||
|
@ -108,11 +110,12 @@ def process_task(taskId):
|
||||||
if cancel_monitor is not None:
|
if cancel_monitor is not None:
|
||||||
cancel_monitor()
|
cancel_monitor()
|
||||||
|
|
||||||
try:
|
if delete_lock:
|
||||||
redis_client.delete(lock_id)
|
try:
|
||||||
except redis.exceptions.RedisError:
|
redis_client.delete(lock_id)
|
||||||
# Ignore errors, the lock will expire at some point
|
except redis.exceptions.RedisError:
|
||||||
pass
|
# Ignore errors, the lock will expire at some point
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue