Django Задание сельдерея получено, выполнено, но не завершено с использованием pyswarms GlobalBestPSO - PullRequest
0 голосов
/ 17 марта 2020

У меня есть Django приложение с сельдереем в Docker. У меня есть 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

И после этого ничего не происходит.

Но, если я бегу без задержки сельдерея ():

predict_task(19, test_id, sample_data.to_json())

Тогда код успешно выполнено до конца. И я получаю результат.

Что может быть не так? Почему GlobalBestPSO не выполняется в задаче?

...