Я пытаюсь запустить 2 задачи с одним работником таким образом, чтобы эти 2 задачи отправлялись в одно и то же время, чтобы рабочий выполнял одну задачу за раз. (Я намеренно избегаю способа импорта, так как собираюсь распространять его позже)
Вот start_worker.py
from celery import Celery
from time import sleep
app = Celery('tempo',
backend='redis://127.0.0.1',
broker='redis://127.0.0.1')
# Optional configuration, see the application user guide.
app.conf.update(
result_expires=3600,
task_acks_late=True,
worker_prefetch_multiplier=1)
@app.task
def add(x, y):
print(f'task, started. sleep 30 {x+y}')
sleep(30)
print(f'task, ended. {x+y}')
return x + y
if __name__ == '__main__':
app.worker_main(["--concurrency=1", "-n=tesa"])
start_task.py
from celery import Celery
app = Celery('Test',backend='redis://127.0.0.1', broker='redis://127.0.0.1')
r1 = app.send_task('tempo.add', args=(2,3))
r2 = app.send_task('tempo.add', args=(3,4))
print(r1.get(timeout=60),r2.get(timeout=60))
используя Redis. python 3,7 (только для форматирования, та же ошибка 3,6)
для воссоздания ошибки. python start_worker.py
python start_task.py
Вывод задания.
Traceback (most recent call last):
File "start_task.py", line 5, in <module>
print(r1.get(timeout=60),r2.get(timeout=60))
File "/home/iamauser/anaconda3/envs/cl/lib/python3.7/site-packages/celery/result.py", line 228, in get
on_message=on_message,
File "/home/iamauser/anaconda3/envs/cl/lib/python3.7/site-packages/celery/backends/asynchronous.py", line 195, in wait_for_pending
return result.maybe_throw(callback=callback, propagate=propagate)
File "/home/iamauser/anaconda3/envs/cl/lib/python3.7/site-packages/celery/result.py", line 333, in maybe_throw
self.throw(value, self._to_remote_traceback(tb))
File "/home/iamauser/anaconda3/envs/cl/lib/python3.7/site-packages/celery/result.py", line 326, in throw
self.on_ready.throw(*args, **kwargs)
File "/home/iamauser/anaconda3/envs/cl/lib/python3.7/site-packages/vine/promises.py", line 244, in throw
reraise(type(exc), exc, tb)
File "/home/iamauser/anaconda3/envs/cl/lib/python3.7/site-packages/vine/five.py", line 195, in reraise
raise value
celery.exceptions.NotRegistered: 'tempo.add'