Files
fun-rec/docs/ch03/ch3.2/3.2.8.1.md
T
2022-04-21 20:33:29 +08:00

280 lines
11 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Task01问答整理
## 1. Task01整体流程(外加录屏整理)
- 本次组队学习的内容以github上第二章第二节为主,具体每次的学习内容和重点已经在对应章节下的README.md中,大家忘记的可以随时取查看。
https://github.com/datawhalechina/fun-rec
- 可以先体验一下本次学习内容的成果
fun-rec项目中的新闻推荐系统开方测试了,地址:http://47.108.56.188:8686/,由于服务器比较拉胯,大家刷内容的时候可能会比较慢希望大家理解(第一次进系统尤其的慢),目前仍然可能存在一些bug,希望大家发现bug之后及时跟我们反馈呀。
- 最新的代码也已经上传到了github上面,感兴趣的可以去看看
https://github.com/datawhalechina/fun-rec
- 作者寄语:
​ 和DWer和准DWer们一起花了近两个月实现了一个新闻推荐系统的demo,这段时间真的辛苦大家了,很多系统出问题调bug都是拉个腾讯会议讨论解决方案,包括现在每天起来的一件事就是查看一下系统挂了没有,哪里不正常。
​ 内容虽然没有任何商业价值,但是对于还是学生的我们来说,挑战还是非常大的,需要大家一起齐心协力的合作,用现有的技术组装出一个能正常跑起来的推荐系统。
​ 本次内容量比较多,要想更好的完成本次组队学习任务也需要每个队伍的同学互相帮助,比如大家也可以考虑分工,最后互相分享的学习。相信大家在本次的组队学习中收获的不仅仅是系统中涉及到的相关技术,还能收获到一群和自己志同道合的朋友。
​ 最后就是我们其实也是做系统的外行,代码或者系统的逻辑肯定存在很多问题。如果大家有更好的建议,我们也可以进一步交流,互相学习。
- Task01录屏(罗如意)
https://datawhale.feishu.cn/minutes/obcnzns778b725r5l535j32o
- 环境配置(windows)交流会议:
操作系统:Windows10
MySQL8.0.25
Redis5.0.14
Mongodb5.0.5
Python3.8
录屏:https://share.weiyun.com/u3ZIjZfg
- 作业分享:https://relph1119.github.io/my-team-learning/#/recommender_system32/task01
- 总结:https://share.weiyun.com/u3ZIjZfg
## 2. 问题解答
- 问:在执行`Scrapy`进行新闻爬取实战的时候,写不进去`mongdb`数据库
![image-20211229131610291](https://gitee.com/murasamelory/cloudimages/raw/master/img/image-20211229131610291.png)
![image-20211229131758632](https://gitee.com/murasamelory/cloudimages/raw/master/img/image-20211229131758632.png)
答:`mongodb`安装是否成功?有没有报错之类的。
问:成功安装。爬虫已经成功,我看`title content`已经有数据了
![image-20211229131818388](https://gitee.com/murasamelory/cloudimages/raw/master/img/image-20211229131818388.png)
答:你这里是不是什么都没有,你退出`mongo`命令行重新进入查看一下呢?
![image-20211229131834758](https://gitee.com/murasamelory/cloudimages/raw/master/img/image-20211229131834758.png)
问:对,我是在`windows`下做的,还是没有
![image-20211229131922288](https://gitee.com/murasamelory/cloudimages/raw/master/img/image-20211229131922288.png)
答:你看下这个路径是不是有问题,我这里好像忘记改成`fun-rec`的路径了,你改成`fun-rec`下的路径再试试,有可能这里没有的参数没有导入进去。
问:是`setting`这个表吗?
答:你看看,应该是数据库那块的参数配置有问题。
问:`setting`在,在`settings`里面固化了的。
答:你这个代码是不是很早之前就下载的。嗷,想起来了。文档里面的内容没改。不过应该不影响。
问:就是开课的时候下载的。
答:不过应该不影响,代码你是自己单独写呢?还是运行的`fun-rec`下的`code代`码?你检查下pipline下面,看参数配置是否有问题,写一点print查看一下,然后在这里单独使用`insert`方法插入点东西查看是否有问题。
![image-20211229132407052](https://gitee.com/murasamelory/cloudimages/raw/master/img/image-20211229132407052.png)
问(解决):找到问题了,在`copy piplines`文件的时候,`def`类没有对齐。
![image-20211229132519459](https://gitee.com/murasamelory/cloudimages/raw/master/img/image-20211229132519459.png)
- 问:`linux`一般软件安装都放在哪个目录下面啊?是`usr/local`吗?
答:这个看自己的习惯
- 问:出现跨域问题如何解决?
答:还需要启动`snowflaske`服务,启动代码为:
```
snowflake_start_server --address=127.0.0.1 --port=8910 --dc=1 --worker=1
```
- 问:如何修改redis配置?
答:https://blog.csdn.net/qq_39007083/article/details/105083156
- 问:`stop-writes-on-bgsave-error no`报错
答:这个可能和安装有关
- 问:服务没启动问题
![image-20211229133614924](https://gitee.com/murasamelory/cloudimages/raw/master/img/image-20211229133614924.png)
答:对,需要安装,启动这个服务,已经加入到文档中。
![image-20211229133652271](https://gitee.com/murasamelory/cloudimages/raw/master/img/image-20211229133652271.png)
- 问:`redis key`的问题如何处理?
答:https://github.com/datawhalechina/fun-rec/blob/master/codes/news_recsys/news_rec_server/recprocess/README.md
- 问:`No module named 'conf.dao_config' `没有正确识别包,怎么办?
答1:看一下自己的路径是不是正确导入了,有可能跟系统有关,需要自己调整一下。
答2:这个问题,我遇到过,直接执行sh,在Windows下会出现,目前采用手动执行py脚本方式。
答:嗯嗯,我也先手动。
答:查到解决方法了,把出问题的地方`sys.path.append("")`换成`sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))`就可以了
- 问:是否可能在教程中强调一下`node`版本的约束?前端部分很多`dependency`较老,比如`node-sass`包在较新`node`环境会编译错误。
答:直播时强调了,`linux`最好用项目目录下的那个`node`版本
- 问:`linux`时间是2021-7-20。结果redis用make编译的时候提示创建不完善(我是windows下的redis文件传到linux,结果显示安装文件是未来的文件)
答:`clock screw`问题可以通过touch修正一下错误的文件时间就可以了
- 问:在终端执行:`snowflake_start_server [--dc=DC_ID] [--worker=WORKER_ID] [--host=ADDRESS] [--port=PORT]`,报错显示`-bash: snowflake_start_server: `未找到命令,怎么解决。
答:看一下是否安装呢?运行的时候没有带参数吗?
问:带了参数,是`snowflake_start_server --address=127.0.0.1 --port=8910 --dc=1 --worker=1`
答:检查`path`里面是否有`user site`,试一试这个指令`export PATH=$PATH:"$(python3.8 -c 'import site; print(site.USER_BASE)')/bin"`
答:有反应了,可以修复,谢谢。
- 问:如何手动爬取信息?
答:手动方式,文档中有写,直接运行单独的py脚本即可。
https://docs.scrapy.org/en/latest/topics/settings.html#download-delay
- 问:请问`pip install`的报错如何改正
答:指令修改为:
`npm install -g cnpm --registry=https://registry.npm.taobao.org`
`cnpm install`
问:还是不行,有两条指令只报了`warning`,装完之后`npm install`还是会报找不到`python`和`pemition deny`
答:把`node modules`删掉重新用cnpm装一下试试,代码如下:
`npm install rimraf -g `
`rimraf node_modules`
问:还是报`python`错误,经过面向搜索引擎开发,有提到用`sudo`,但是发现还是不行,实际原因是由于用的是`root`账户权限执行`npm`,而`npm`默认是不适用`root`权限创建内容,因此会出现权限问题而导致失败,加上参数`--unsafe-perm=true --allow-root`即可解决问题。
答:步骤是:首先要装`py2``apt install python2`。然后换`cnpm``npm install -g cnpm --registry=https://registry.npm.taobao.org`, `cnpm install`。然后删掉`modules``npm install rimraf -g` `rimraf node_modules`。然后root用户的话`npm install --production --unsafe-perm=true --allow-root`。非root`sudo npm install`
- 问:TODO: 设置开机自启动
启动mongodb(服务器断电之后就会断开链接):
sudo ./mongod --dbpath=/usr/local/mongodb/data/ --fork --logpath=/usr/local/mongodb/log
​ TODO: 设置开机自启动
启动redis
redis-server --daemonize yes --port 6378 --requirepass 123456
redis-cli --raw
./mongod 这个是在哪里的?
​ 答:就是你安装的mongdb的目录下面的bin文件里面的东西,你得看一下是安装到哪里了,找到对应的可执 行 脚本就行。
问:没有userinfo这个库是否需要先建库?
​ 答:需要。表的话代码里面有这块的内容,会自动构建。你可以先测试`sqlalchemy`是否可以正常创建表。
- 问:`sh: 1: webpack-dev-server: not found`,开启前端服务报这个错
答:`cnpm install`一下就好了
- 问:外网访问的这个,除了设置`main.js`里的`axios.defaults.baseURL = "http://服务i去公网ip:3000"`,然后防火墙开`3000`端口和`8686`端口之外还有什么要设置的么
答:`flask 0.0.0.0`、`vue 0.0.0.0`和`外网访问`
- 问:跨域问题是啥意思?
答:https://blog.csdn.net/qq_38128179/article/details/84956552
- 问:为什么我的项目都启动了,用户也注册成功了,但是`datagrip`里面`MongoDB`下没有那两个数据库,`mysql`两个数据库下面没有对应的表?
答:数据库,右键刷新一下就出来了
问:都有了,反应有点慢
- 问:加载比较慢怎么办?
答:如果初始化就很慢的话可以把`router.js`里引入`component`的方式换成`component: () => import('./components/recLists.vue')`,会快一点点
- 问:为什么这一次运行`process_user.py`会报错,没这表啊?看报错好像是语法格式的问题。
答:数据库版本问题
- 问:关于服务:
答:服务器从`8686`发送`html`到`browser`渲染和执行代码,本地`browser`向服务器`3000`端口发送请求,所以后端服务器要`bind`到`0.0.0.0`保证公网可以访问。
- 问:`Datagrip`连接`mongodb`之后数据库显示`current database is not introspected`可能是什么原因导致的?
答:不用管,如果没有数据,这个库是不会显示的。
- 问:运行后端`server`遇到过这个报错吗?
![image-20211229213706142](https://gitee.com/murasamelory/cloudimages/raw/master/img/image-20211229213706142.png)
答:重新安装下`cryptography`这个包
问:还是不行
答:有可能包冲突导致的,重建一个本地python环境
- 问:爬虫的时候报`cryptography`的错误,但是后端`server`服务是可以开启的,是什么原因?
答:`pip install -l cryptography == 35.0.0`可以解决。