我在 Django 中有一个 Rest API,并且在扩展 ModelViewSet 的类中有以下方法:
@custom_decorator
@action(methods=['get'], detail=False, url_name="byname", url_path="byname")
def get_by_name(self, request):
# get query params from get request
username = request.query_params["username"]
experiment = request.query_params["experiment"]
Run Code Online (Sandbox Code Playgroud)
如果我删除第一个注释器,一切正常。但是当我尝试使用两个装饰器调用此函数时,它甚至找不到特定的 url 路径。
是否可以将多个装饰器与 @action 装饰器一起使用?
我有以下代码,我在其中初始化侦听队列的消费者。
consumer = MyConsumer()
consumer.declare_queue(queue_name="my-jobs")
consumer.declare_exchange(exchange_name="my-jobs")
consumer.bind_queue(
exchange_name="my-jobs", queue_name="my-jobs", routing_key="jobs"
)
consumer.consume_messages(queue="my-jobs", callback=consumer.consume)
Run Code Online (Sandbox Code Playgroud)
问题是consum方法定义如下:
async def consume(self, channel, method, properties, body):
Run Code Online (Sandbox Code Playgroud)
在 Consumer 方法中,我们需要等待异步函数,但这会为 Consumer 函数产生错误“coroutine is not waiting”。有没有办法在 pika 中使用异步函数作为回调?
我有一个 Django 应用程序,我使用 celery 和rabbitmq 来执行异步任务。我已配置芹菜将日志写入文件,当我执行时
celery -A project_name -b <broker_url> worker -l INFO
一切工作正常,日志都打印在控制台和文件中。
但是,当我使用 -D 选项执行上述命令(即分离工作程序)时,该文件不再附加日志。
我的日志记录配置:
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'standard': {
'format': "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
'datefmt': "%d/%b/%Y %H:%M:%S"
},
},
'handlers': {
'null': {
'level': LOGGING_LEVEL,
'class': 'logging.NullHandler',
},
'logfile': {
'level': LOGGING_LEVEL,
'class': 'logging.handlers.RotatingFileHandler',
'filename': log_file_path,
'maxBytes': 5000000,
'backupCount': 2,
'formatter': 'standard',
},
'console': {
'level': LOGGING_LEVEL,
'class': 'logging.StreamHandler',
'formatter': 'standard'
},
},
'loggers': {
'django': {
'handlers': ['console'], …
Run Code Online (Sandbox Code Playgroud) 我有一个在 Docker 容器内运行的应用程序。该服务是使用 FastAPI 框架编写的,用于生成报告。我们首先生成一个 HTML 报告,然后使用 Weasyprint 库将其转换为 PDF。当我在笔记本电脑上执行它时(我使用的是 Manjaro Linux),一切都运行良好。但是,当我在 docker 容器内使用 API 时,我注意到生成的 PDF 中的字体不同。在 CSS 文件中,我们使用 Helvetica 字体系列、无衬线字体。因此,当在容器内生成报告时,无衬线字体不起作用。
此外,我已将我的字体文件夹(从我的笔记本电脑)复制到 Docker 容器中,以检查它是否缺少某些字体;然而,无衬线字体仍然不起作用。
这是我的 Dockerfile:
FROM tiangolo/uvicorn-gunicorn-fastapi
RUN apt-get update && apt-get install -y build-essential unzip vim git curl locales orca
RUN apt install -y python3-cffi libcairo2 libcairo2-dev libpango-1.0-0 libpango1.0-dev libpangocairo-1.0-0 libgdk-pixbuf2.0-0 \
libgdk-pixbuf2.0-dev libffi-dev shared-mime-info libffi-dev fonts-font-awesome
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \
locale-gen
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
ARG RELEASE=main …
Run Code Online (Sandbox Code Playgroud)