我正在尝试在 Django 中创建套接字。我按照这个链接安装了 asgi_redis 。当我运行命令 python manage.py runserver 时,出现以下错误。
>python manage.py runserver
CommandError: You have not set ASGI_APPLICATION, which is needed to run the server.
Run Code Online (Sandbox Code Playgroud)
由于我还没有启动redis,上面的错误可能是因为这个。我有点困惑,我需要单独安装Redis还是只需要启动redis,因为我已经安装了asgi_redis?
redis 的 project/settings.py 文件条目。
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'asgi_redis.RedisChannelLayer',
'CONFIG': {
'hosts': [('localhost', 6379)],
},
'ROUTING': 'example_channels.routing.channel_routing',
}
}
Run Code Online (Sandbox Code Playgroud) 我正在上一堂发送通知的课。初始化时,它涉及到与通知服务器的连接,这非常耗时。我在 FastAPI 中使用后台任务来发送通知,因为我不想因通知而延迟响应。下面是示例代码。
file1.py:
noticlient = NotificationClient()
@app.post("/{data}")
def send_msg(somemsg: str, background_tasks: BackgroundTasks):
result = add_some_tasks(data, background_tasks, noticlient)
return result
file2.py:
def add_some_tasks(data, background_tasks: BackgroundTasks, noticlient):
background_tasks.add_task(noticlient.send, param1, param2)
result = some_operation
return result
Run Code Online (Sandbox Code Playgroud)
这里,通知客户端是全局声明的。我可以在file2.pyunder中初始化它add_some_tasks,但每次请求到达时它都会被初始化,这需要一些时间。有什么办法可以使用中间件在每次请求到达时重新使用它,这样就不需要每次都进行初始化。
或方法二:在类 def 中初始化通知
file1.py:
class childFastApi(FastAPI):
noticlient = NotificationClient()
app = childFastApi()
@app.post("/{data}")
def send_msg(somemsg: str, background_tasks: BackgroundTasks):
result = add_some_tasks(data, background_tasks, app.noticlient)
return result
Run Code Online (Sandbox Code Playgroud) 我得到低于错误。有没有办法在不安装 python-Levenshtein 的情况下修复它,如果没有,那么如何在 linux 上安装 python-Levenshtein。
UserWarning: Using slow pure-python SequenceMatcher. Install python-Levenshtein to remove this warning
warnings.warn
Run Code Online (Sandbox Code Playgroud) 我想从代码内部捕获覆盖范围。我尝试了下面的一种,但出现错误。请参阅以下链接了解覆盖 API。 https://coverage.readthedocs.io/en/v4.5.x/api.html#api
import os
import pandas as pd
import sys
import requests
import xml.etree.ElementTree as ET
from xml.dom import minidom
import coverage
cov = coverage.Coverage()
cov.start()
#actual code
cov.stop()
cov.save()
cov.html_report(directory='covhtml')
Run Code Online (Sandbox Code Playgroud)
低于错误
CoverageException Traceback (most recent call last)
<ipython-input-15-2047badbbd57> in <module>()
48 cov.save()
49
---> 50 cov.html_report(directory='covhtml')
C:\Users\\Anaconda2\lib\site-packages\coverage\control.pyc in html_report(self, morfs, directory, ignore_errors, omit, include, extra_css, title, skip_covered)
1093 )
1094 reporter = HtmlReporter(self, self.config)
-> 1095 return reporter.report(morfs)
1096
1097 def xml_report(
C:\Users\\Anaconda2\lib\site-packages\coverage\html.pyc in report(self, morfs)
137
138 …Run Code Online (Sandbox Code Playgroud)