kopia lustrzana https://github.com/OpenDroneMap/WebODM
Add ability to set maximum worker time limits
rodzic
3a3ed948db
commit
f0bf65c589
|
@ -1,5 +1,6 @@
|
||||||
import inspect
|
import inspect
|
||||||
from worker.celery import app
|
from worker.celery import app
|
||||||
|
from webodm import settings
|
||||||
|
|
||||||
task = app.task
|
task = app.task
|
||||||
|
|
||||||
|
@ -15,7 +16,7 @@ def run_function_async(func, *args, **kwargs):
|
||||||
return eval_async.delay(source, func.__name__, *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):
|
def eval_async(self, source, funcname, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
Run Python code asynchronously using Celery.
|
Run Python code asynchronously using Celery.
|
||||||
|
|
|
@ -398,6 +398,9 @@ CLEANUP_EMPTY_PROJECTS = None
|
||||||
# Maximum number of threads that a worker should use for processing
|
# Maximum number of threads that a worker should use for processing
|
||||||
WORKERS_MAX_THREADS = 1
|
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
|
# Link to GCP docs
|
||||||
GCP_DOCS_LINK = "https://docs.opendronemap.org/gcp/#gcp-file-format"
|
GCP_DOCS_LINK = "https://docs.opendronemap.org/gcp/#gcp-file-format"
|
||||||
|
|
||||||
|
|
|
@ -123,7 +123,7 @@ def setInterval(interval, func, *args):
|
||||||
t.start()
|
t.start()
|
||||||
return stopped.set
|
return stopped.set
|
||||||
|
|
||||||
@app.task(ignore_result=True)
|
@app.task(ignore_result=True, time_limit=settings.WORKERS_MAX_TIME_LIMIT)
|
||||||
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
|
||||||
|
@ -190,7 +190,7 @@ def process_pending_tasks():
|
||||||
process_task.delay(task.id)
|
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):
|
def export_raster(self, input, **opts):
|
||||||
try:
|
try:
|
||||||
logger.info("Exporting raster {} with options: {}".format(input, json.dumps(opts)))
|
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))
|
logger.error(str(e))
|
||||||
return {'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):
|
def export_pointcloud(self, input, **opts):
|
||||||
try:
|
try:
|
||||||
logger.info("Exporting point cloud {} with options: {}".format(input, json.dumps(opts)))
|
logger.info("Exporting point cloud {} with options: {}".format(input, json.dumps(opts)))
|
||||||
|
|
Ładowanie…
Reference in New Issue