Я пытаюсь построить асинхронную функцию с обратными вызовами, она прекрасно работает, когда я пытаюсь запустить 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