Python Web框架Sanic Sockets 实例

发表时间:2020-02-18

Sanic 可以使用 Python 的 socket 模块来容纳非 IPv4 的 sockets。比如下面的 IPv6 的例子:

Sanic Sockets 套接字

from sanic import Sanic
from sanic.response import json
import socket

sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
sock.bind(('::', 7777))

app = Sanic()


@app.route("/")
async def test(request):
    return json({"hello": "world"})

if __name__ == "__main__":
    app.run(sock=sock)

可以通过 curl 来测试这个 IPv6 的应用:

curl -g -6 "http://[::1]:7777/"

同样的,也可以实现 Unix socket 的绑定:

import signal
import sys
import socket
import os
from sanic import Sanic
from sanic.response import json


server_socket = '/tmp/sanic.sock'

sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.bind(server_socket)

app = Sanic()


@app.route("/")
async def test(request):
    return json({"hello": "world"})


def signal_handler(sig, frame):
    print('Exiting')
    os.unlink(server_socket)
    sys.exit(0)


if __name__ == "__main__":
    app.run(sock=sock)

使用 curl 测试 Unix socket:

curl -v --unix-socket /tmp/sanic.sock http://localhost/hello

文章来源互联网,如有侵权,请联系管理员删除。邮箱:417803890@qq.com / QQ:417803890

微配音

Python Free

邮箱:417803890@qq.com
QQ:417803890

皖ICP备19001818号
© 2019 copyright www.pythonf.cn - All rights reserved

微信扫一扫关注公众号:

联系方式

Python Free