【发布时间】:2013-01-29 17:06:55
【问题描述】:
我正在开发一个小型但计算密集型的 Python 应用程序。计算密集型工作可以分成几个可以同时执行的部分。我正在尝试确定一个合适的堆栈来完成此操作。
目前我计划在 Apache2+WSGI 上使用 Flask 应用程序和 Celery 作为任务队列。
在下面,如果有 3 个或更多工作人员可用,a_long_process()、another_long_process() 和 yet_another_long_process() 会同时执行吗?进程执行时 Flask 应用会被阻塞吗?
来自 Flask 应用程序:
@myapp.route('/foo')
def bar():
task_1 = a_long_process.delay(x, y)
task_1_result = task_1.get(timeout=1)
task_2 = another_long_process.delay(x, y)
task_2_result = task_2.get(timeout=1)
task_3 = yet_another_long_process.delay(x, y)
task_3_result = task_3.get(timeout=1)
return task_1 + task_2 + task_3
tasks.py:
from celery import Celery
celery = Celery('tasks', broker="amqp://guest@localhost//", backend="amqp://")
@celery.task
def a_long_process(x, y):
return something
@celery.task
def another_long_process(x, y):
return something_else
@celery.task
def yet_another_long_process(x, y):
return a_third_thing
【问题讨论】:
标签: python asynchronous flask celery