小编har*_*k24的帖子

django-channels 可以处理多少个并发连接?

我正在使用 Django 频道进行聊天应用程序。此应用程序可能会在一段时间内扩展到 10 万个并发用户。我想知道 Django Channels 可以处理多少并发连接。基本上,我将它与 XMPP 服务器进行比较,XMPP 是可扩展性的更好选择还是我应该继续使用 Django 频道?

另外,我使用 redis 层作为通道层。我想知道 redis 层是否会在某个时间点成为瓶颈?

谢谢

django websocket django-channels

12
推荐指数
1
解决办法
2612
查看次数

如何在 Django Rest 中为谷歌云存储中的文件生成签名 url?

我正在使用 Django Rest 框架来制作 API。除此之外,我还使用 Google Cloud Storage 来存储媒体文件。我有几个问题:

  1. 如何使用 django rest 框架生成签名文件 url?我一直在用相同的方式搜索网络,但无法获得清晰的图片。关联

  2. 那么,如果我删除了数据库中的文件,它是否也会从 Google 云存储中自动删除?

提前致谢!!!

django django-models google-cloud-storage django-rest-framework

6
推荐指数
1
解决办法
1825
查看次数

在全局环境中安装包而不是在 Windows 上的 virtualenv

我正在使用 pycharm,为此我正在使用 python virtualenv。

我使用penv\Scripts\activate.bat命令激活 virtualenv 。但是当我运行时pip install requests,它被安装在全局文件夹而不是本地 virtualenv 文件夹中。我不明白为什么会这样。

输出where python如下:

E:\app-backend\penv\Scripts\python.exe
C:\Users\Hardik\AppData\Local\Programs\Python\Python37\python.exe
Run Code Online (Sandbox Code Playgroud)

输出where pip如下:

E:\app-backend\penv\Scripts\pip.exe
C:\Users\Hardik\AppData\Local\Programs\Python\Python37\Scripts\pip.exe
Run Code Online (Sandbox Code Playgroud)

我一次又一次地尝试过,但它总是在全局文件夹中安装任何包。但是当我使用E:\app-backend\penv\Scripts\pip.exeinstall of运行任何命令时pip,它会在本地 virtualenv 中安装该包。

谁能告诉我这里发生了什么?

python pip virtualenv

5
推荐指数
1
解决办法
5643
查看次数

如何在调试 cpython 时遍历 Python 操作码?

我想了解Python解释器的功能。我了解操作码的生成过程,并希望更好地理解解释器部分。为此,我在互联网上阅读了很多内容,并了解了python 解释器(Cpython)中的文件for (;;)循环ceval.c

现在我想解释以下Python代码a.py

a = 4
b = 5
c = a + b
Run Code Online (Sandbox Code Playgroud)

当我做python -m dis a.py

  1           0 LOAD_CONST               0 (4)
              2 STORE_NAME               0 (a)

  2           4 LOAD_CONST               1 (5)
              6 STORE_NAME               1 (b)

  3           8 LOAD_NAME                0 (a)
             10 LOAD_NAME                1 (b)
             12 BINARY_ADD
             14 STORE_NAME               2 (c)
             16 LOAD_CONST               2 (None)
             18 RETURN_VALUE
Run Code Online (Sandbox Code Playgroud)

现在我已将调试点switch(opcode)放入ceval.c. 现在,当我启动调试器时,它会出现这个位置 2000 多次。我认为这是因为在开始之前,Python 还必须做一些其他的解释工作。所以,我的问题是如何仅调试相关的操作码指令?

基本上,我如何知道我正在调试的指令实际上来自我创建的程序?

请帮我解决同样的问题。提前致谢。

c python gdb cpython

5
推荐指数
1
解决办法
823
查看次数

即使使用 RotatingFileHandler,Django 也会一次记录到多个文件?

我使用 Django 进行日志记录配置如下:

LOGGING = {
    'version':1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '{asctime} {process:d} {thread:d} {levelname} {name} {module} {funcName} {message}',
            'style': '{',
        }
    },
    'handlers': {
        'file': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': BASE_DIR+'/logs/django_logs.log',
            'backupCount': 14,
            'maxBytes': 52428800,
            'formatter': 'verbose'
        }
    },
    'loggers': {
        '': {
            'handlers': ['file'],
            'level': 'INFO'
        }
    },
}
Run Code Online (Sandbox Code Playgroud)

我正在运行 16 个 django 进程,几个用于 websocket 的 daphne 和几个用于基于 django Rest 框架的正常 API 调用的 Gunicorn 进程。但是当我查看日志时,会同时记录多个文件。例如,django_logs.1 .... django.logs.14 同时登录。我是否必须添加其他内容来一次记录到一个文件,并仅在其大小超过日志文件的指定大小时才轮换它?

有关额外信息,我使用 python 3.6.8 并在每个项目文件中初始化记录器,如下所示:

import logging …
Run Code Online (Sandbox Code Playgroud)

python django python-3.x django-rest-framework python-logging

2
推荐指数
1
解决办法
1687
查看次数