小编sth*_*eli的帖子

Django Rest - 将 @action 与自定义装饰器一起使用

我在 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 装饰器一起使用?

django rest

9
推荐指数
1
解决办法
728
查看次数

Python - RabbitMQ Pika 消费者 - 如何使用异步函数作为回调

我有以下代码,我在其中初始化侦听队列的消费者。

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 中使用异步函数作为回调?

python rabbitmq pika

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

Celery Worker 在分离时不写入日志

我有一个 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)

python django celery

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

使用 docker 内的 WeasyPrint 导出 PDF 中的字体 (FastAPI)

我有一个在 Docker 容器内运行的应用程序。该服务是使用 FastAPI 框架编写的,用于生成报告。我们首先生成一个 HTML 报告,然后使用 Wea​​syprint 库将其转换为 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)

python docker weasyprint fastapi

4
推荐指数
1
解决办法
2388
查看次数

标签 统计

python ×3

django ×2

celery ×1

docker ×1

fastapi ×1

pika ×1

rabbitmq ×1

rest ×1

weasyprint ×1