Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

537
Views
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 answers
Answer question

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 Report

0

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

over 4 years ago · Santiago Trujillo Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!