AttributeError: невозможно выбрать локальный объект «Flask.__init__..» из-за многопроцессорностиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 AttributeError: невозможно выбрать локальный объект «Flask.__init__..» из-за многопроцессорности

Сообщение Anonymous »

Я пытаюсь запустить веб-сервер внутри процесса. (Отвечайте на этот вопрос, почему мне нужно использовать многопроцессорность: остановка даш-сервера внутри потока не работает)
Это небольшой пример:
import logging
from dash import html, Dash
from flask import Flask
from multiprocessing import Process

############################## setup logger #############################
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(threadName)s, %(levelname)s] %(message)s",
handlers=[
logging.FileHandler("logs.log"),
logging.StreamHandler()
]
)
#########################################################################

class test:
def __init__(self):
flask_app = Flask(__name__)
self.app = Dash(__name__, server=flask_app)

# Define a simple layout
self.app.layout = html.Div(children=[
html.H1(children='Hello Dash'),
html.P(children='This is a simple Dash app for testing.'),
html.Button('Click Me', id='button')
])

def prepare_webserver(self):
self.server_proc = Process(target=self.run_server,
name='dash_server',
daemon=True)
self.server_proc.start()

# Function to run the server
def run_server(self):
logging.info("Starting Dash server")
self.app.run_server(debug=True, use_reloader=False)

if __name__ == "__main__":
sim_manager = test()
sim_manager.prepare_webserver()

И я получаю следующую ошибку:
Traceback (последний последний вызов):
File "C:\Users\username\Desktop\Projects\python_framework\optimization_framework\test2.py", line 42, in
sim_manager.prepare_webserver()
File "C:\Users\username\Desktop\Projects\python_framework\optimization_framework\test2.py", line 33, in prepare_webserver
self.server_proc.start()
File "C:\Users\username\AppData\Local\Programs\Python\Python310\lib\multiprocessing\process.py", line 121, in start
self._popen = self._Popen(self)
File "C:\Users\username\AppData\Local\Programs\Python\Python310\lib\multiprocessing\context.py", line 224, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "C:\Users\username\AppData\Local\Programs\Python\Python310\lib\multiprocessing\context.py", line 327, in _Popen
return Popen(process_obj)
File "C:\Users\username\AppData\Local\Programs\Python\Python310\lib\multiprocessing\popen_spawn_win32.py", line 93, in __init__
reduction.dump(process_obj, to_child)
File "C:\Users\username\AppData\Local\Programs\Python\Python310\lib\multiprocessing\reduction.py", line 60, in dump
ForkingPickler(file, protocol).dump(obj)
AttributeError: Can't pickle local object 'Flask.__init__..'
Traceback (most recent call last):
File "", line 1, in
File "C:\Users\username\AppData\Local\Programs\Python\Python310\lib\multiprocessing\spawn.py", line 116, in spawn_main
exitcode = _main(fd, parent_sentinel)
File "C:\Users\username\AppData\Local\Programs\Python\Python310\lib\multiprocessing\spawn.py", line 126, in _main
self = reduction.pickle.load(from_parent)
EOFError: Ran out of input


Подробнее здесь: https://stackoverflow.com/questions/785 ... lambda-due
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • AttributeError: объект «Flask» не имеет атрибута «before_first_request» в Flask 3.x
    Anonymous » » в форуме Python
    0 Ответы
    94 Просмотры
    Последнее сообщение Anonymous
  • AttributeError: объект «Flask» не имеет атрибута «before_first_request» в Flask 3.x
    Anonymous » » в форуме Python
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • ContextManager получает доступ к locals() вызова с помощью блока
    Anonymous » » в форуме Python
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous
  • Разница между форматом (**locals()) и f-строкой при использовании переменной в качестве ключа для словарей
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Измените существующую переменную в `locals()` или `frame.f_locals`
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»