Я пробовал приведенный ниже код на ec2. (Amazon linux2)
from sanic import Sanic
from sanic.response import json
app = Sanic()
@app.route('/')
async def test(request):
return json({'hello': 'world'})
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8000)
Он работает нормально.
Bue, когда я изменил номер порта на 80, как показано ниже
from sanic import Sanic
from sanic.response import json
app = Sanic()
@app.route('/')
async def test(request):
return json({'hello': 'world'})
if __name__ == '__main__':
app.run(host='0.0.0.0', port=80)
Система отвечает,
main.py:4: DeprecationWarning: Sanic(name=None) is deprecated and None value support for `name` will be removed in the next release. Please use Sanic(name=‘your_application_name’) instead.
app = Sanic()
[2020-06-16 08:16:15 +0000] [8303] [INFO] Goin’ Fast @ http://0.0.0.0:80
[2020-06-16 08:16:15 +0000] [8303] [ERROR] Unable to start server
Traceback (most recent call last):
File “/home/ec2-user/sanic/lib64/python3.7/site-packages/sanic/server.py”, line 835, in serve
http_server = loop.run_until_complete(server_coroutine)
File “uvloop/loop.pyx”, line 1456, in uvloop.loop.Loop.run_until_complete
File “uvloop/loop.pyx”, line 1727, in create_server
PermissionError: [Errno 13] error while attempting to bind on address (‘0.0.0.0’, 80): permission denied
[2020-06-16 08:16:15 +0000] [8303] [INFO] Server Stopped
Далее я сделал
sudo python main.py
Затем в сообщении об ошибке говорится:
File “main.py”, line 7
async def test(request):
^
SyntaxError: invalid syntax
Я не знаю, что делать делать. Дайте мне совет.
Моя папка выглядит как показано ниже
sanic/
├ bin/
├ includs/
├ lib/
├ lib64
├ main.py
└ pyvenv.cfg