Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

530
Visualizações
ValueError: set_wakeup_fd solo funciona en el subproceso principal en Windows en Python 3.8 con Django 3.0.2 o Flask 2.0.0

Cuando ejecuto mi aplicación web Django con Apache2.4.41 + Python 3.8.1 + Django 3.0.2 + MySQL 8.0.19 en la versión de Windows 10 Professional, arroja Value Error en /. set_wakeup_fd solo funciona en el hilo principal.

Este problema fue el resultado de una regresión en Python 3.8 y se solucionó en noviembre en versiones posteriores de Python. Para obtener más detalles: https://bugs.python.org/issue38563 .

Stacktrace del error es el siguiente:

 Environment: Request Method: GET Request URL: http://127.0.0.1/ Django Version: 3.0.2 Python Version: 3.8.1 Installed Applications: ['Analysis.apps.AnalysisConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize'] Installed Middleware: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware'] Traceback (most recent call last): File "c:\python38\lib\site-packages\django\core\handlers\exception.py", line 34, in inner response = get_response(request) File "c:\python38\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response response = self.process_exception_by_middleware(e, request) File "c:\python38\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "F:\IndianMarketAnalysis\ISMA\Analysis\views.py", line 8, in home date_list = dict(d.date_list()) File "F:\IndianMarketAnalysis\ISMA\Analysis\models.py", line 7, in date_list with connection.cursor() as cursor: File "c:\python38\lib\site-packages\django\utils\asyncio.py", line 19, in inner event_loop = asyncio.get_event_loop() File "c:\python38\lib\asyncio\events.py", line 636, in get_event_loop self.set_event_loop(self.new_event_loop()) File "c:\python38\lib\asyncio\events.py", line 656, in new_event_loop return self._loop_factory() File "c:\python38\lib\asyncio\windows_events.py", line 310, in __init__ super().__init__(proactor) File "c:\python38\lib\asyncio\proactor_events.py", line 632, in __init__ signal.set_wakeup_fd(self._csock.fileno()) Exception Type: ValueError at / Exception Value: set_wakeup_fd only works in main thread

Además, esta aplicación funciona muy bien en el entorno de desarrollo local mediante el uso de python manage.py runserver.

Por favor sugiera los siguientes pasos para seguir adelante.


El mismo problema ocurre en Flask 2.0.0 ( pip install --pre flask ):

 @app.get('/') async def say_hello(): return {'message': 'Hello!'}
 > flask run Traceback (most recent call last): File "c:\users\greyli\...\venv\lib\site-packages\flask\app.py", line 1953, in wsgi_app response = self.full_dispatch_request() File "c:\users\greyli\...\venv\lib\site-packages\flask\app.py", line 1454, in full_dispatch_request rv = self.handle_user_exception(e) File "c:\users\greyli\...\venv\lib\site-packages\flask\app.py", line 1452, in full_dispatch_request rv = self.dispatch_request() File "c:\users\greyli\...\app.py", line 318, in dispatch_request return self.view_functions[rule.endpoint](*req.view_args.values()) File "c:\users\greyli\...\venv\lib\site-packages\flask\helpers.py", line 781, in outer return async_to_sync(inner)(*args, **kwargs) File "c:\users\...\venv\lib\site-packages\asgiref\sync.py", line 203, in __call__ loop_future.result() File "C:\Users\greyli\.pyenv\pyenv-win\versions\3.8.0\lib\concurrent\futures\_base.py", line 432, in result return self.__get_result() File "C:\Users\greyli\.pyenv\pyenv-win\versions\3.8.0\lib\concurrent\futures\_base.py", line 388, in __get_result raise self._exception File "C:\Users\greyli\.pyenv\pyenv-win\versions\3.8.0\lib\concurrent\futures\thread.py", line 57, in run result = self.fn(*self.args, **self.kwargs) File "c:\users\greyli\...\venv\lib\site-packages\asgiref\sync.py", line 256, in _run_event_loop loop.close() File "C:\Users\greyli\.pyenv\pyenv-win\versions\3.8.0\lib\asyncio\proactor_events.py", line 679, in close signal.set_wakeup_fd(-1) ValueError: set_wakeup_fd only works in main thread
over 4 years ago · Santiago Trujillo
4 Respostas
Responde à pergunta

0

actualizado a python 3.8.2, funcionó bien en mi servidor de Windows.

notas de la versión https://docs.python.org/release/3.8.2/whatsnew/changelog.html#python-3-8-2-final

problema bpo-34679: se corrigió asynci.ProactorEventLoop.close() ahora solo llama a signal.set_wakeup_fd() en el hilo principal.

over 4 years ago · Santiago Trujillo Relatório

0

Tuve que cambiar a Python 3.7 y luego comenzó a funcionar perfectamente.

over 4 years ago · Santiago Trujillo Relatório

0

Tengo exactamente el mismo error. Abrí el tema .

Si desea permanecer en la versión actual de Python, he encontrado la solución temporal que consiste en agregar las siguientes líneas a asgiref\__init__.py (como se sugirió en el problema ):

 if sys.platform == "win32" and sys.version_info >= (3, 8, 0): asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
over 4 years ago · Santiago Trujillo Relatório

0

No solo Django, sino que también encontrará este error con Flask, ya que Flask 2.0.0 usa asgiref para admitir async .

Este error se solucionó en Python 3.9, por lo que hay dos soluciones:

  • Actualizar a Python 3.9
  • Agregue la corrección temporal de la siguiente manera (basada en la respuesta de Dennis B ) a su script de entrada, por ejemplo, app.py de Flask o manager.py de Django:
 # top of the file import sys, asyncio if sys.platform == "win32" and (3, 8, 0) <= sys.version_info < (3, 9, 0): asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda