Add ability to set maximum worker time limits

pull/1713/head
Piero Toffanin 2025-07-23 18:10:21 -04:00
rodzic 3a3ed948db
commit f0bf65c589
3 zmienionych plików z 8 dodań i 4 usunięć

Wyświetl plik

@ -1,5 +1,6 @@
import inspect
from worker.celery import app
from webodm import settings
task = app.task
@ -15,7 +16,7 @@ def run_function_async(func, *args, **kwargs):
return eval_async.delay(source, func.__name__, *args, **kwargs)
@app.task(bind=True)
@app.task(bind=True, time_limit=settings.WORKERS_MAX_TIME_LIMIT)
def eval_async(self, source, funcname, *args, **kwargs):
"""
Run Python code asynchronously using Celery.

Wyświetl plik

@ -398,6 +398,9 @@ CLEANUP_EMPTY_PROJECTS = None
# Maximum number of threads that a worker should use for processing
WORKERS_MAX_THREADS = 1
# Maximum number of seconds a worker task should take before being terminated
WORKERS_MAX_TIME_LIMIT = 2
# Link to GCP docs
GCP_DOCS_LINK = "https://docs.opendronemap.org/gcp/#gcp-file-format"

Wyświetl plik

@ -123,7 +123,7 @@ def setInterval(interval, func, *args):
t.start()
return stopped.set
@app.task(ignore_result=True)
@app.task(ignore_result=True, time_limit=settings.WORKERS_MAX_TIME_LIMIT)
def process_task(taskId):
lock_id = 'task_lock_{}'.format(taskId)
cancel_monitor = None
@ -190,7 +190,7 @@ def process_pending_tasks():
process_task.delay(task.id)
@app.task(bind=True)
@app.task(bind=True, time_limit=settings.WORKERS_MAX_TIME_LIMIT)
def export_raster(self, input, **opts):
try:
logger.info("Exporting raster {} with options: {}".format(input, json.dumps(opts)))
@ -210,7 +210,7 @@ def export_raster(self, input, **opts):
logger.error(str(e))
return {'error': str(e)}
@app.task(bind=True)
@app.task(bind=True, time_limit=settings.WORKERS_MAX_TIME_LIMIT)
def export_pointcloud(self, input, **opts):
try:
logger.info("Exporting point cloud {} with options: {}".format(input, json.dumps(opts)))