我们假设我正在创建以下服务:
@app.route('/train_model' , methods = ['GET' , 'POST'])
假设有多人想使用上述服务训练模型(使用不同的数据集)。
所以,我现在需要加入并行性。
所以必须添加以下内容
注意:以下不是完整的代码
def make_celery(app):
celery = Celery(app.import_name, broker = 'redis://localhost:6379',#amqp://localhost//,
backend = 'redis://localhost:6379')
celery.conf.update(app.config)
TaskBase = celery.Task
class ContextTask(TaskBase):
abstract = True
def __call__(self, *args, **kwargs):
with app.app_context():
return TaskBase.__call__(self, *args, **kwargs)
celery.Task = ContextTask
return celery
app = Flask(__name__)
celery = make_celery(app)
@app.route('/train_qna_service' , methods = ['GET' , 'POST'])
def uploadfile():
train_model.delay()
@celery.task(name='main.train_model')
def train_model():
# do appropriate task to train the model
pass
但如果我使用train_model.delay()
,我就不会得到结果。如果我使用train_model.wait()
,则其他人无法点击该服务。如果我使用multiprocessing
模块,还有其他人无法点击该服务。
使用刻录服务支持多种培训请求的最佳方法是什么?