Процесс Python не работает асинхронно на UWSGI с nginx, но хорошо работает на сервере run.ver manage.py - PullRequest
0 голосов
/ 22 сентября 2019

Я пытаюсь построить асинхронную функцию с обратными вызовами, она прекрасно работает, когда я пытаюсь запустить Python manage.py runserver, но когда я использую его на сервере с uWSGI и nginx, код запускается синхронно, и основной процесс ожидает выполнения дочернего процесса

Я пытался использовать потоки, вместо этого обрабатывать все нормально, но в своем коде я использую некоторую глобальную системную функцию, которая плохо работает с потоками, например - sys.stdout

import time
import sys


def my_process_func(arg, arg2):
    sys.stdout = open(arg+".txt", 'a+', encoding='utf8')
    print("Running process! Args: " + arg + ', ' + arg2)
    time.sleep(10)
    print("Done!")

p = Process(target=my_process_func, args=("p1", "test"))
p2 = Process(target=my_process_func, args=("p2", "test2"))
p.start()
p2.start()
print("Spun off process")

результат при запускеЭтот код с использованием сервера Python создает два файла TXT с выводом

Spun off process

p1.txt

Running process! Args: p1, test Done!

p2.txt

Running process! Args: p2, test2 Done! но с использованием uwsgi результат будет

Running process! Args: p1, test Done!

Spun off process

...