部署到阿里centos后
来源:14-3 uwsgi配置文件方式启动以及代码更新后的重启
weixin_慕斯卡4281563
2019-05-22
部署到阿里云后发现工程当中有一个逻辑功能不能像本地win10那样正常执行。
出问题的逻辑大概是这样: 前端页面一个按钮 被点击后通过ajax触发后台一个view,里面做一些判断(有读取系统时间等等语句)以及数据库存取(datetime类型字段)的操作 后返回httpresponse到template里 给用户相应的提示并刷新当前页面。 这个功能在本地运行没有任何问题 但是上了阿里后不行。贴下代码
我用了很笨的方法(在不同的位置返回HttpResponse到前端,
if borrow_time != '':
return HttpResponse('{"status":"fail","msg":"borrow_time"}', content_type='application/json')
borrow_time = datetime.strptime(borrow_time, "%Y-%m-%dT%H:%M") # %Y年%m月%d日 %H:%M:%S
return HttpResponse('{"status":"fail","msg":"testafter"}', content_type='application/json')
else:
return HttpResponse('{"status":"fail","msg":"借用日期非法,无法借用"}', content_type='application/json')
看到底程序在什么地方不继续执行了)定位到出问题的语句是红框那句,很明显strptime这个函数在linux里没有正常被执行导致后面的代码无法执行。但是我也没法监控这时的borrow_time到底是什么样子的,因为这不同于在本地运行可以在pycharm中断点调试,也试了用pycharm通过远程连接到阿里云服务器试图能够断点监控但最终还是没有搞定。请教老师 这里使用strptime可能与win10下不一样吧? 另外就是pycharm如何远程连接到阿里服务器在线监控程序运行?网上的办法试了总有问题啊。
上面的问题找到答案了。 datetime类型的数据是有时、分、秒和微妙的,win10本地运行的时候,前端读取数据库再返回给后台view的话会抛掉6位的微妙,所以用的格式串是%Y年%m月%d日 %H:%M:%S 而部署到linux后发现这里不通过,折腾了下发现 前端读取数据库再返回给后台view的话连秒都抛掉,所以格式串要用%Y年%m月%d日 %H:%M。
今天在bobby帮助下又查出了一个问题datetime类型数据不是字符串不能用__icontains,奇怪的是在win10本地确实可以用来实现我的逻辑。
user_reserve_form = UserEquipmentForm(
{'user': user_id, 'borrow_time': borrow_time, 'plan_to_return_time': plan_to_return_time, 'return_time': return_time,'equipment': equipment_id},
instance=UserEquipment.objects.get(*borrow_time__icontains*=borrow_time, user=request.user)
)
今天老师还帮我设置好了pycharm在线更改上传代码到阿里云。
1回答
-
Ethreal
2019-05-23
你把这段代码写个脚本文件放在Linux上运行下看看结果是什么,有没有其他输出 什么叫总有问题? 到底是什么问题?
022019-05-24
相似问题