функция карты billiard.pool зависает - PullRequest
0 голосов
/ 23 ноября 2018

Мне нужно запустить свою логику параллельно, используя все доступные процессоры, для этого я использую бильярдный пакет для пула, PFB мой технологический стек -

-Python 3
-Django==2.0.5
-Django rest from work
-celery==4.2.0

Моя проблема в том, что когда я бью себяAPI и вызывая мою задачу сельдерея, он выполняет до строки пула, но после этого, когда он зависает, я не получаю никаких сообщений об ошибках, но он не движется дальше.

PFB структура моего проекта:

-cdm
  |cmdapp
  |  |
  |  |helper
  |  |  |aaa.py
  |  |tasks
  |  |  |bbb.py
  |  |api
  |     |ccc.py
  |cdm
  | |settings.py
  |manage.py

PFB мой пример кода:

#cmdapp.helper.aaa.py
from billiard.pool import Pool
class A():
    def squre(self,number):
        return number*number
    def calculate(self,number_list):
        pool = Pool()
        result = pool.map(self.squre, number_list)
        return result

#cmdapp.tasks.bbb.py
from celery import task
from cmdapp.helper.aaa import A
@task
def calculation_task(number_list):
    a_obj=A()
    result=a_obj.calculate(number_list)



#cmdapp.api.ccc.py
from rest_framework.views import APIView
from rest_framework import status, permissions
from rest_framework.response import Response
from cmdapp.tasks.bbb import calculation_task

class C(APIView):
    def get(self, request):
        range_list=range(1000)
        calculation_task.delay(range_list)
        return Response({
            "result": "success",
        }, status=status.HTTP_200_OK)

Я просмотрел несколько статей, в которых упоминалось, что недоступная для выбора функция не может быть вызвана функцией pool.map.Здесь я не получаю, чтобы моя функция выбиралась или не выбиралась, и почему это зависает.Пожалуйста, помогите в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...