python - 在 Django 应用程序中初始化 GraphQL 客户端的位置

标签 python django graphql

我正在用 Django 构建一个 API,我想查询 Github GraphQL API,我发现了这个 GraphQL client适合我需要的python。

但是现在,我想知道,在我的 Django 应用程序中初始化这样一个客户端的正确位置在哪里?在请求里面?在apps.py 中?在views.py中?任何指导方针将不胜感激!这是我当前的 Django 项目文件夹结构:

.
├── LICENSE
├── README.md
├── api
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── db.sqlite3
├── manage.py
├── portfolio
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── requirements.txt
└── setup.py

提前致谢!

最佳答案

TLDR : 实例化 View 方法中的新客户端权限 = 每个请求的新客户端。 (不错的选择 - 覆盖 initial 查看方法)。以后改进。

这取决于。
如果客户端没有请求/用户选项(= 客户端是 相同的 对于每个请求/用户):

  • 按照@ElPapi42 的建议从子模块导入一个(= 与全局在views.py 中实例化新客户端相同,而不是作为方法逻辑的一部分)
  • 或在 View 方法中实例化新客户端 - 每个请求的新客户端

  • 如果有请求/用户特定选项(即客户端需要有 request.user 特定选项/凭据):
  • 在 View 方法中实例化新客户端

  • 选项 1 - 每个工作人员 View 实例化一次客户端。尽管它提供了一些性能优势,但它们是微妙而模糊的:
  • 您可能不知道这意味着什么:共享客户端 => 可能使用修改客户端状态的方法来处理依赖状态的不同请求/用户
  • worker 生命周期(应该)实际上没有那么长
  • 很难评估性能 yield ,很难评估正确的实现

  • 实际上,您可能希望使用当前的 request.user 连接到 github特定选项,执行多个请求(= cookie 可能涉及并在后续请求中自动添加 => 客户端不能与多个用户共享)= 每个用户至少有单独的客户端。

    关于python - 在 Django 应用程序中初始化 GraphQL 客户端的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62386986/

    相关文章:

    python - 在 Django 中,我如何返回与模型相关的项目总数?

    graphql - Relayjs Graphql用户身份验证

    typescript - 如何将 GraphQL 与 TypeScript 和 graphql-code-generator 生成的类型一起使用?

    python - ManyToMany 字段在单元测试中返回 None

    python - 如何在 django 中创建唯一的 URL?

    python - 使用 frozen set 作为 Dict 键是否安全?

    django - 从 form.save 访问请求对象

    javascript - connectionFilterRelations 不适用于 postgraphile-plugin-connection-filter

    python - 如何加快包含 sql 查询的代码?

    python - 如何设置 QTextEdit 中每行的最大字符数