Django + Ошибка многопроцессорной передачи аргументов - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть функция, которая выделяет отдельный процесс и передает ему некоторые аргументы.Когда я вызываю эту функцию тестирования локально, все в порядке.Когда я вызываю эту функцию из представления Django, передаваемые переменные не имеют никакого смысла.В частности, когда я передаю строку, то с другой стороны, независимо от того, какую строку я вставляю, получается __path__.Упрощенный пример:

views.py:

handler = Handler()
@csrf_exempt
def my_view_func(request)
    str1 = request.POST['str1'] # passed value is e.g. 'my string'
    return HttpResponse(handler.do_work(str1))

handler.py

from multiprocessing import Process
class Handler:
    def do_work(str1):
        # str1 is still 'my string'
        p = Process(target=self.do_work_help, args=(str1))
        p.start()
        # str1's value is again in this context

    def do_work_help(str1):
        print str1 # value will be '__path__'

Из того, что я прочитал, я, вероятно, должен использовать Celery для этого, ноЯ бы предпочел пока не проводить рефакторинг всего, поэтому, если у кого-то есть какие-либо идеи о том, что здесь происходит, я очень признателен за краткосрочное исправление.

...