git
假如 我现在在修改hotfix, 在下面新建了一个 yhy_hotfix 并且修改完了,(push到了远端)
最好是所有的东西都走一遍hotfix
1 切换到 hotfix
2 git pull origin hotfix
3 run test ( control+R 按多次就是上翻)
4 merge yhy_hotfix
5 run rest
6 git push all hotfix
最后 切换到master 同理 做类似的上述操作
上office 这台机器上 pull。origin. master
pushtest : 把修改推到测试上. 问一下其他人是否可以pushtest
exit 上test 上重启服务:
ssh jump 然后选择 17 livetest1 然后选择 2 zeus
然后重启: reload_http
如果是添加新的后台功能 或者 加权限!!!
1 在liveliest1上 src 目录下运行python manage.py migrate
(ValueError: too many values to unpack) 如果报了这个错 很有可能是model 里面的permissions少了括号,或者少了逗号,导致django 认为参数太多
2 在测试上的
Authentication and Authorization administration
groups 里面吧权限 放出来
(权限问题!!!)
models 里面的permissions里面的名字 必须和 admin_views第三个参数(权限) 对应好,不能有错
如何上线????
上线步骤:
1告诉钉哥 :我要上线
2等着
问题:
pull util 库 在work库下面 进入util 然后 git pull origin
如果xxxx 没有安装,test 会挂掉,解决方法:
那么我们直接去src下,pip install -r requirements.txt (其实这一步在代码准备里面有,只是自己忘了而已)
解决方法3: (创建完整的db)
在master 下 pull 然后。python setup.
问题4 :
在databases 里面可能有人写了 00x ,你也新建了一个00x , 那么我们的python setup.py --cleanup 会报错,因为head 只能有一个,所以我们需要修改这个冲突。
注意:
revision = '0515531373bb'
down_revision = '2c71be138db0'
一个是自己的随机数, 一个是其后面的随机数
如果要改变databases , 那么就要在脚本那儿新建py ,:
python new_db_file.py --db miveshow_task --name add_follow_test
之后在测试、线上也需要更新????:
如何更新呢????
实现步骤:
1. 新建表:
在src — databases 下 :python new_db_file.py —db databases’s_name --name newtable’s_name
然后在pycharm 里面的databases 写相应的sql代码
然后在databases 下 python db_upgrade.py —db databases’s_name
线上更新:
# DB
liveserver03(src) => git stash pop =>(database) python db_upgrade.py => git stash
如果冲突了:git reset --hard
liveadadmin => python manage.py migrate
更新数据库流程改一下吧。
在liveserver03上
1、git diff看一下本地有什么临时修改,然后把临时修改要么stash,要么checkout掉。
2、git stash list 查看一下有哪些stash的,找到哪个修改了很多 alembic.ini 的stash,查看stash内容:git stash show -p stash@{ID}
3、git stash apply stash@{ID} 应用那个stash,最好不要pop。
4、在 database 目录下,python db_upgrade.py
调试代码:
python manage.py shell
可以单独运行某一个部分的代码,来观察其返回值等等
直接在databases 里面操作(危险!!!)
1 begin
2 执行命令
3 如果出错 : rollback
4 确定之后 commit
错误:
IOError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/editor.py'
错误类型:Permission denied
解决方法: 请 进入虚拟环境,谢谢??
如何 用shell 执行某一段代码???
python manage.py shell
然后进入到了python的环境下, 然后因为instaces里 有一些实例化的class (xxx)
找到自己改变的class(别忘了添加了pdb) ,import进去,然后xxx.def 就可以进行调试了。
这样主要是为了手动测试一下,自己写的代码有没有问题。
当什么东西没有,需要到测试上去看相关的配置,比如settings
打算先上test 然后去db看一眼, 测试 的mysql 进不去db
感觉正确的解法:远程连接数据库
然后在后台http://test.api.dokidokilive.com/dk1503/admin/basic_settings/setting/?all=
找到了一个 “wage_settings”
How远程连接数据库:
不要在线上 vim 太大的文件,会出事故的!
临时checkout
git stash
git stash pop
如何访问POST接口的 api:
比如:家族徽章:
curl http://127.0.0.1:8000/api/family/family_permission_sort/\?uid\=uhttpA -X POST -d "family_uid=uhttpA&sort_list=[[ 0, 1], ]"
MYSQL 报错:1406 Data too long for column
看一下是否自己的表设置的字段长度不够。。。
更新mysql 错误:
*** ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE\n uid = 'uhttpA'' at line 4")
错误 :
解决方案--》最后执行查询的SQL语句应该是下面的样子:
SELECT *FROM renshiguanliWHERE GH=13
表名和关键字WHERE之间应该有空格的。
在WHERE之前加个空格试试。
自己的错误时: WHERE 前面有一个逗号, 把逗号去了。
错误:当单独跑局部的 function test没问题,但是全局的test 这一部分却报错???
是因为:
local_cacher 没有删掉,光更新了 redis 。。。所以会找不到。。。
新增了user这张表的信息,那么也要去测试上检查user 各个功能是否会出错。。。
在liveliest 上tmux a -t http 去看看有没有相关报错
脚本的运行调试:
脚本有时候要给一些参数。。。那么如果调试呢
Python 脚本的名字 -自己设置的参数 xxx -参数2 xxx2
比如:
python tools/40W_add_family_extra_permissions.py -e t123 -b 0
具体参照——文件:40W_add_family_extra_permissions
transaction( 也就是 begin,commit 和rollback 的相关操作)
这个操作会将数据锁死,如果如果我们对常访问的表进行大数据操作的话。。。这个东西是会变的非常危险(会出事故!),所以一定记住
我们的 货币系统:()代表在mysql中的 存储方式
获得方式。 用途
1 gold(credits). 充钱 送礼
2 coins(recived_credits) 直播收礼物 兑换doki_coins
兑换gold 和 cash
3 doki_coins(doki_coins) 主播手里的coins兑换, 兑换gold
Table = user_coins 签约主播工资月结 兑换亚马逊券
答题活动可以得到 兑换cash(未实现)
测试切换到自己分支(记得要切回去)
1 上测试,进入src
2 git checkout 自己的分支. Git pull
3 reload
4 测试完之后切回来
出现系统错误http_miss_setting_in_db:
1 线上 系统设置 查找
2 在本机添加这个设置
重启schedu job(或者其他一些东西)
一般在livetest1 上 tmux 可以看到一些分支
attach 过去 然后control + c ,再重新启动(按上)即可
线上:
重启别的,不管线上线下,有个东西叫做 部署
如何查看log_error信息。(测试上)
/var/log/zeus
一定不能在pusic_admin里面. import. api.instance ! 切记切记
临时上线—(后台)。liveadmin ———src 切到master 分支——pull———tmux -a t ausg—重启
如果需要看一个数据流的详细数据:比如post
用dir() 去查看其函数,然后仔细去看看其中是否有自己需要的
比如说 想要看 django 的用户 request.user.username 就是通过上述步骤得到的
list 为dict 时的排序
sorted_guild_list = sorted(guild_list, key=lambda x: x['anchor_number'], reverse=True)
Django 如果change_actions 没有效果的话很可能是没有继承DjangoObjectAction
关于主库从库——读写分离
从库 是只读的,一般的读取操作都从 从库中读取,(如果能接受一定的延迟 例如1s以上)
主库一般指用来写入。 (如果特别关键的读写都用主库,例如钱
主库从库一般是一致的,但是会有延迟,而且有可能主从断开(出事故了
如何查看日志:
1 找到logger
2 在相应的 dev prod test 的 相应的logger 例如backend.conf里面去查看 path
记得选前xx行
Tail -f xxxxxx.log | grep yhyxxxxxxx
关于webscoket 的理解:
用户: ———A。
服务器 a b c
登陆call一次api拿到user_info之后,会缓存下来。然后用户发消息 ———a,b,c————其他用户
如果user_info中有字段的消息改变了,那么其他用户看得到改变
但是用户A,如果不更新的话,他是看不到的,那么我们通过websocket告诉用户A,所以这个消息一定要确认能够发出去。
查看django 的日志
在miveshow_admin里面有相应的Django_log等表单,可以去找找
主播工资结算:settle_signed_anchors_wage
重命名 相关命令:
alias
alias -p
跑test 的时候,mysql 卡住不动
当你某一个debug 没做完的时候———很有可能此时你锁住了某个db。。。
主从p2
从数据库导出数据, 由于权限一般只允许使用
mysqldumps. 但这个不能执行sql语句
所以用这个: echo "select * from miveshow.users limit 1" | mysql_prod > out.txt
|
连接远程数据库
1 mysql -hip(没有空格)-u -p (这两个数据可以去push01 的db_local里面看)
Python 中
from api.instance import xxx
会吧instances中的所有的实例化对象都做一遍
查看http 是否重启成功:
tail /var/log/zeus/miveshow_http ( + | grep error)
关于kafka 的消费者一个应用的实例:
可以看看 src/commom/kafka_batch_consumer/processor.py 里面的Processor 从task 中区分了很大一部分的逻辑过来。
Kafka 生产者例子:
Src/common/pusic_message.py 里面各种创建消息、发送至kafka。 例子之一:红包消息发送。
关于类 继承 、重写:__init__() 的一个很好的例子:
写设备分发活动的时候 想给一个 class RichAnchorTaskHandler增加一个kafka_producer, RichAnchorTaskHandler继承了RichAnchorBaseHandler
于是此时有两种写法:
1 重写RichAnchorBaseHandler的 __init__, 这样的话,所有继承这个的都需要改动
2 在RichAnchorTaskHandler中重写一个__init__ ,这样的话,只需要改这个
( 如果按照最简单的原则,那么肯定采用2。改写最外层的class, 有init 的话就不需要再往上看继承关系了
地址: src/events/handler
Python 默认参数的陷进:居然有缓存机制:
https://www.cnblogs.com/youngershen/p/3978332.html
Mac. 配置lrzsz 教程:
https://segmentfault.com/a/1190000012166969