Python Flask - 创建新项目后出错
Python Flask - Errors after creating a new project
在创建一个新项目并尝试 运行 之后,我得到了这样的结果:
* Environment: development
* Debug mode: off
Traceback (most recent call last):
File "C:\Users\Sebastian\AppData\Local\Programs\Python\Python38-32\lib\runpy.py", line 192, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\Sebastian\AppData\Local\Programs\Python\Python38-32\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\flask\__main__.py", line 3, in <module>
main()
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\flask\cli.py", line 994, in main
cli.main(args=sys.argv[1:])
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\flask\cli.py", line 600, in main
return super().main(*args, **kwargs)
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\click\core.py", line 1053, in main
rv = self.invoke(ctx)
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\click\core.py", line 1659, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\click\core.py", line 1395, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\click\core.py", line 754, in invoke
return __callback(*args, **kwargs)
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\click\decorators.py", line 84, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\click\core.py", line 754, in invoke
return __callback(*args, **kwargs)
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\flask\cli.py", line 853, in run_command
run_simple(
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\werkzeug\serving.py", line 1010, in run_simple
inner()
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\werkzeug\serving.py", line 950, in inner
srv = make_server(
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\werkzeug\serving.py", line 782, in make_server
return ThreadedWSGIServer(
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\werkzeug\serving.py", line 688, in __init__
super().__init__(server_address, handler) # type: ignore
File "C:\Users\Sebastian\AppData\Local\Programs\Python\Python38-32\lib\socketserver.py", line 452, in __init__
self.server_bind()
File "C:\Users\Sebastian\AppData\Local\Programs\Python\Python38-32\lib\http\server.py", line 139, in server_bind
self.server_name = socket.getfqdn(host)
File "C:\Users\Sebastian\AppData\Local\Programs\Python\Python38-32\lib\socket.py", line 756, in getfqdn
hostname, aliases, ipaddrs = gethostbyaddr(name)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe6 in position 4: invalid continuation byte
我已经尝试重新安装 python、更改 python 版本、更新 PIP,但其中 none 有帮助。同样的问题是创建一个 Diango 项目。
顺便问一下,你试过使用64位版本的Python吗?我不太确定 Django 在 32 位环境中的行为方式。
无论如何,主要问题似乎与您的 WSGI 服务器有关,而不是 Django 本身。您似乎正在尝试在 WSGI 服务器中使用线程,它包含在您的 python 进程中,它将与所有 Python 进程一样绑定到单个线程。
我的建议:使您的 wsgi.py 尽可能简单,并让像 gunicorn 这样的 WSGI 外部服务器处理并行性。您的 wsgi.py 的示例可能是这样的:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hellodjango.settings")
# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
# Apply WSGI middleware here.
from helloworld.wsgi import HelloWorldApplication # Change the defaults for your app paths
application = HelloWorldApplication(application)
要运行您的应用程序作为服务器,只需运行以下命令:
gunicorn helloworld.wsgi
,再次更改 helloworld
为您的应用程序名称。检查 gunicorn docs 以获取有关 运行 并行实例的更多信息,这只是您必须设置的 --workers
配置参数,其中包含您的计算机可以处理的工作人员数量(通常是您的 CPU 数量 - 1 ).
干杯!
在创建一个新项目并尝试 运行 之后,我得到了这样的结果:
* Environment: development
* Debug mode: off
Traceback (most recent call last):
File "C:\Users\Sebastian\AppData\Local\Programs\Python\Python38-32\lib\runpy.py", line 192, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\Sebastian\AppData\Local\Programs\Python\Python38-32\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\flask\__main__.py", line 3, in <module>
main()
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\flask\cli.py", line 994, in main
cli.main(args=sys.argv[1:])
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\flask\cli.py", line 600, in main
return super().main(*args, **kwargs)
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\click\core.py", line 1053, in main
rv = self.invoke(ctx)
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\click\core.py", line 1659, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\click\core.py", line 1395, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\click\core.py", line 754, in invoke
return __callback(*args, **kwargs)
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\click\decorators.py", line 84, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\click\core.py", line 754, in invoke
return __callback(*args, **kwargs)
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\flask\cli.py", line 853, in run_command
run_simple(
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\werkzeug\serving.py", line 1010, in run_simple
inner()
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\werkzeug\serving.py", line 950, in inner
srv = make_server(
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\werkzeug\serving.py", line 782, in make_server
return ThreadedWSGIServer(
File "C:\Users\Sebastian\PycharmProjects\informatyka\venv\lib\site-packages\werkzeug\serving.py", line 688, in __init__
super().__init__(server_address, handler) # type: ignore
File "C:\Users\Sebastian\AppData\Local\Programs\Python\Python38-32\lib\socketserver.py", line 452, in __init__
self.server_bind()
File "C:\Users\Sebastian\AppData\Local\Programs\Python\Python38-32\lib\http\server.py", line 139, in server_bind
self.server_name = socket.getfqdn(host)
File "C:\Users\Sebastian\AppData\Local\Programs\Python\Python38-32\lib\socket.py", line 756, in getfqdn
hostname, aliases, ipaddrs = gethostbyaddr(name)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe6 in position 4: invalid continuation byte
我已经尝试重新安装 python、更改 python 版本、更新 PIP,但其中 none 有帮助。同样的问题是创建一个 Diango 项目。
顺便问一下,你试过使用64位版本的Python吗?我不太确定 Django 在 32 位环境中的行为方式。
无论如何,主要问题似乎与您的 WSGI 服务器有关,而不是 Django 本身。您似乎正在尝试在 WSGI 服务器中使用线程,它包含在您的 python 进程中,它将与所有 Python 进程一样绑定到单个线程。
我的建议:使您的 wsgi.py 尽可能简单,并让像 gunicorn 这样的 WSGI 外部服务器处理并行性。您的 wsgi.py 的示例可能是这样的:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hellodjango.settings")
# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
# Apply WSGI middleware here.
from helloworld.wsgi import HelloWorldApplication # Change the defaults for your app paths
application = HelloWorldApplication(application)
要运行您的应用程序作为服务器,只需运行以下命令:
gunicorn helloworld.wsgi
,再次更改 helloworld
为您的应用程序名称。检查 gunicorn docs 以获取有关 运行 并行实例的更多信息,这只是您必须设置的 --workers
配置参数,其中包含您的计算机可以处理的工作人员数量(通常是您的 CPU 数量 - 1 ).
干杯!