test cleaning tasks in a task fails:
[2020-12-20 18:01:50,264: WARNING/ForkPoolWorker-7] Pruning UncloudTask object (571ffc76-8b40-4cb6-9658-87030834bc6c)... [2020-12-20 18:01:50,265: ERROR/ForkPoolWorker-7] Task uncloud.tasks.cleanup_tasks[f9fb1480-f122-41c9-bec1-3d6d0f92a22e] raised unexpected: RuntimeError('Never call result.get() within a task!\nSee http://docs.celeryq.org/en/latest/userguide/tasks.html#task-synchronous-subtasks\n') Traceback (most recent call last): File "/home/nico/vcs/uncloud/venv/lib/python3.8/site-packages/celery/app/trace.py", line 405, in trace_task R = retval = fun(*args, **kwargs) File "/home/nico/vcs/uncloud/venv/lib/python3.8/site-packages/celery/app/trace.py", line 697, in __protected_call__ return self.run(*args, **kwargs) File "/home/nico/vcs/uncloud/uncloud/tasks.py", line 13, in cleanup_tasks print(res.get()) File "/home/nico/vcs/uncloud/venv/lib/python3.8/site-packages/celery/result.py", line 209, in get assert_will_not_block() File "/home/nico/vcs/uncloud/venv/lib/python3.8/site-packages/celery/result.py", line 37, in assert_will_not_block raise RuntimeError(E_WOULDBLOCK) RuntimeError: Never call result.get() within a task! See http://docs.celeryq.org/en/latest/userguide/tasks.html#task-synchronous-subtasks
This commit is contained in:
parent
5e870f04b1
commit
8f83679c48
4 changed files with 22 additions and 6 deletions
|
@ -15,8 +15,3 @@ app.config_from_object('django.conf:settings', namespace='CELERY')
|
|||
|
||||
# Load task modules from all registered Django app configs.
|
||||
app.autodiscover_tasks()
|
||||
|
||||
|
||||
@app.task(bind=True)
|
||||
def debug_task(self):
|
||||
print(f'Request: {self.request!r}')
|
||||
|
|
|
@ -224,6 +224,13 @@ CELERY_TASK_ROUTES = {
|
|||
re.compile(r'.*.tasks.cdist.*'): { 'queue': 'cdist' } # cdist tasks go into cdist queue
|
||||
}
|
||||
|
||||
CELERY_BEAT_SCHEDULE = {
|
||||
'cleanup_tasks': {
|
||||
'task': 'uncloud.tasks.cleanup_tasks',
|
||||
'schedule': 10
|
||||
}
|
||||
}
|
||||
|
||||
# CELERY_TASK_CREATE_MISSING_QUEUES = False
|
||||
|
||||
# Overwrite settings with local settings, if existing
|
||||
|
|
14
uncloud/tasks.py
Normal file
14
uncloud/tasks.py
Normal file
|
@ -0,0 +1,14 @@
|
|||
from celery import shared_task
|
||||
from celery.result import AsyncResult
|
||||
|
||||
from .models import UncloudTask
|
||||
|
||||
@shared_task
|
||||
def cleanup_tasks():
|
||||
print("Cleanup time")
|
||||
for task in UncloudTask.objects.all():
|
||||
print(f"Pruning {task}...")
|
||||
res = AsyncResult(id=str(task.task_id))
|
||||
if res.ready():
|
||||
print(res.get())
|
||||
task.delete()
|
|
@ -29,7 +29,7 @@ def configure_wireguard_server(wireguardvpnpool):
|
|||
log.info(f"Configuring VPN server {server} (async)")
|
||||
|
||||
task_id = uuid.UUID(cdist_configure_wireguard_server.apply_async((config, server)).id)
|
||||
UncloudTasks.objects.create(task_id=task_id)
|
||||
UncloudTask.objects.create(task_id=task_id)
|
||||
|
||||
|
||||
@shared_task
|
||||
|
|
Loading…
Reference in a new issue