小编srj*_*jio的帖子

使用asyncio的Python简单套接字客户端/服务器

我想使用asyncio协同程序而不是多线程来重新实现我的代码.

server.py

def handle_client(client):
    request = None
    while request != 'quit':
        request = client.recv(255).decode('utf8')
        response = cmd.run(request)
        client.send(response.encode('utf8'))
    client.close()

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('localhost', 15555))
server.listen(8)

try:
    while True:
        client, _ = server.accept()
        threading.Thread(target=handle_client, args=(client,)).start()
except KeyboardInterrupt:
    server.close()
Run Code Online (Sandbox Code Playgroud)

client.py

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.connect(('localhost', 15555))
request = None

try:
    while request != 'quit':
        request = input('>> ')
        if request:
            server.send(request.encode('utf8'))
            response = server.recv(255).decode('utf8')
            print(response)
except KeyboardInterrupt:
    server.close()
Run Code Online (Sandbox Code Playgroud)

我知道有一些适当的异步网络库可以做到这一点.但我只是想在这种情况下只使用asyncio核心库,以便更好地理解它.

在处理客户端定义之前只添加async关键字真是太好了......这里有一段似乎有效的代码,但我仍然对实现感到困惑.

asyncio_server.py

def handle_client(client):
    request = None
    while request != 'quit':
        request …
Run Code Online (Sandbox Code Playgroud)

python sockets python-asyncio

11
推荐指数
2
解决办法
2万
查看次数

Django - 使用 select_related() 优化查询

我有以下型号。

class Car(models.Model):
    owner = models.ForeignKey('Driver')

class Country(models.Model)
    name = models.CharField(max_length=255)

class Driver(models.Model):
    name = models.CharField(max_length=255)
    age = models.IntegerField()
    country = models.ForeignKey('Country')
Run Code Online (Sandbox Code Playgroud)

我想选择拥有汽车的司机的姓名。

Car.objects.all().values('owner__name')
Run Code Online (Sandbox Code Playgroud)

我是否需要使用 select_related() 方法来避免每个对象的连接,或者它是多余的,因为 values() 方法是隐式的?

Car.objects.all().select_related('owner').values('owner__name')
Run Code Online (Sandbox Code Playgroud)

同样,这次我想要拥有汽车的司机的国家名称。哪一个是最好的?

Car.objects.all().values('owner__country__name')
Car.objects.all().select_related('owner', 'country').values('owner__country__name')
Car.objects.all().select_related('owner__country').values('owner__country__name')
Run Code Online (Sandbox Code Playgroud)

django django-queryset django-select-related

3
推荐指数
1
解决办法
847
查看次数