【发布时间】:2017-09-04 18:59:39
【问题描述】:
i'ev 在网络派系服务器上使用 Django 和 python3 开发了一个聊天机器人网络应用程序。基本上,聊天机器人作为客户服务器与商店的用户进行交互。它使用 REST API 来发布用户输入并使用 GET 来显示聊天机器人输出,并使用 python 文件来处理输入并查找输出。
聊天的工作原理:
1. chatboy.js: 它首先在 API 中发布用户输入,然后运行 python 文件 chabot.py。
2。 chabot.py: 一个连接到 Django 后端 db.sqlite3 和 conversation.sqlite3 的 python 文件。所以它从 db.sqlite3 中选择用户输入,然后在 conversation.sqlite3 中选择匹配的输出。最后,该文件将更新 db.sqlite3 中的聊天机器人输出。
3. chatboy.js: 将获取最后一个聊天机器人输出并显示它。
在开发阶段,当我在本地服务器上测试应用程序时,一切正常,但问题来了,我们在互联网上部署了 Django 项目。大多数情况下,导致申请表停止工作的主要错误是:
The database is locked
我做了很多研究发现:
sqlite3 不适用于生产,仅适用于小型或独立应用程序。
sqlite3 存在多线程问题。
不适合实时聊天应用。
有些建议说
- 将所有 sqlite3 切换到 Mysql(但是如何?以及如何更改 python 文件中的 sql 查询以适应 Mysql)
- 使用像 Reddis 这样的快速键值存储(这是否意味着将其作为我的项目的后端 db 或突出会话.sqlite3?)
请帮助我,因为这非常令人沮丧,而且我很长一段时间都遇到此错误,但我找不到问题的解决方案。
谢谢,
PS:我正在使用 Django 10,python3,sqlite3,web 派系服务器
【问题讨论】:
-
如果您使用的是 Django,则不需要更改任何查询; ORM 的一大优势是它与数据库无关。
-
@DanielRoseman 谢谢回复,那么最好把数据库形式 sqlite 改成 mysql 吗?
标签: python mysql django sqlite