簡體   English   中英

無法在 ec2 上運行 python sanic

[英]Can't run python sanic on ec2

我在 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)

它運行良好。

當我將端口號更改為 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

嘗試使用:

須藤python3 main.py

謝天謝地,我自己找到了解決方案。 它是由 PATH 錯誤引起的,因為我使用了 venv。

當我使用

sudo python3 main.py

然后 sys.path 就像

['/home/ec2-user/sanic', '/usr/lib64/python37.zip', '/usr/lib64/python3.7', '/usr/lib64/python3.7/lib-dynload', '/usr/lib64/python3.7/site-packages']沒有一個 PATH 包含“sanic”或我之前安裝的任何模塊。

所以我加了

import sys sys.path.append('/home/ec2-user/sanic/lib/python3.7/site-packages')到 main.py

然后它運行良好。

因此,當您在 amazon linux2 上使用“sudo”時,它會從 venv 中退出。

我也查了

`sudo python main.py'

然后它返回

File "main.py", line 15 async def heavy_task1(): ^ SyntaxError: invalid syntax

我相信沒有任何語法錯誤。 我不知道為什么會這樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM