我在Docker中拥有带有Celery的Django应用。有Django容器,芹菜容器。
django==1.11.4
gunicorn==19.7.1
celery==4.4
redis==3.4.1
sqlalchemy==1.3.13
raven==6.1.0
requests==2.22.0
numpy==1.13.3
pandas==0.20.3
keras==1.2.1
theano==0.9
scikit-learn==0.18.1
matplotlib==2.1.1
seaborn==0.8.1
salib==1.1.2
pyswarms==1.1.0
deap==1.3.0
在我的芹菜任务中,我有代码:
from celery import shared_task
from pyswarms.single.global_best import GlobalBestPSO
@shared_task()
def predict_task():
# Some code
for i in range(
print ('print 111')
optimizer = GlobalBestPSO(n_particles=n_part, dimensions=sample_vals.shape[0], \
options=options, bounds=bounds, \
init_pos=positions)
print ('print 222')
cost, pos = optimizer.optimize(predict_seeded_func, iters=1000, **kwargs)
costs.append(cost)
poses.append(pos)
# Some code
运行具有延迟功能的任务:
predict_task.delay(19, test_id, sample_data.to_json())
然后我知道了
[2020-03-16 22:26:11,689: INFO/MainProcess] Received task: app.tasks.predict_task[f207ac10-5eb5-464b-aed7-b3ec3d2d029d]
[2020-03-16 22:26:11,750: WARNING/ForkPoolWorker-2] print 111
然后没有任何反应。
但是,如果我没有芹菜delay()运行:
predict_task(19, test_id, sample_data.to_json())
然后代码成功执行到最后。然后我得到了结果。
有什么问题吗?为什么GlobalBestPSO不在任务中执行?