python远程调试及celery调试
部分来自
from: https://www.xncoding.com/2016/05/26/python/pycharm-remote.html
你是否经常要在Windows 7或MAC OS X上面开发Python或Web应用程序,但是它们最后需要在linux上面来运行呢? 我们经常会碰到开发时没有问题但是到了正式的Linux环境下面却出现问题。那么怎样保证开发环境跟运行环境的一致呢?
通常有两种方法解决。一种是使用PyCharm内置支持的Vagrant,这个教程可以参考Vagrant开发环境配置。 不过很遗憾的是我自己在试验过程中启动VirtualBox虚拟机时候老是报错,暂时还没解决,读者可以自己试着测试看行不行。 第二种方式就是通过PyCharm的远程解释器加上文件同步功能,实现本地编辑代码->同步到服务器->通过远程debug来调试测试程序。目前我选择的是第二种,虽然比第一种更笨拙点。
远程调试的功能在Eclipse、IntelliJ IDEA等大型IDE中均有支持,实现原理都基本相同,这里采用PyCharm进行说明。
远程服务器的同步配置
远程服务器IP地址192.168.203.95,开启ssh服务,安装python版本2.7。我用一个在PyCharm里面的core-python项目来做演示。
首先我们需要配置PyCharm通服务器的代码同步,打开Tools | Deployment | Configuration
点击左边的“+”添加一个部署配置,输入名字,类型选SFTP

确定之后,再配置远程服务器的ip、端口、用户名和密码。root path是文件上传的根目录,注意这个目录必须用户名有权限创建文件。
然后配置映射,local path是你的工程目录,就是需要将本地这个目录同步到服务器上面,我填的是项目根目录。 Deploy path on server 这里填写相对于root path的目录,下面那个web path不用管先
如果你还有一些文件或文件夹不想同步,那么在配置对话框的第三个tab页“Excluded path”里面添加即可,可同时指定本地和远程。
还有一个设置,打开Tools | Deployment | Options,将”Create Empty directories”打上勾,要是指定的文件夹不存在,会自动创建。
上传和下载文件
有几种方法可以实现本地和远程文件的同步,手动和当文件保存后自动触发。这里我选择了手动,因为自动触发比如影响性能,PyCharm会卡,感觉不爽。
手动上传方式很简单,选择需要同步的文件或文件夹,然后选择 Tools | Deployment | Upload to sftp(这个是刚刚配置的部署名称)

下载文件也是一样,选择 Tools | Deployment | Download from sftp
比较远程和本地文件
有时候你并不确定远程和本地版本的完全一致,需要去比较看看。PyCharm提供了对比视图来为你解决这个问题。
选择Tools | Deployment | Browse Remote Host,打开远程文件视图,在右侧窗口就能看到远程主机中的文件

选择一个你想要对比的文件夹,点击右键->Sync with Local,打开同步对比窗口,使用左右箭头来同步内容。
上面是服务器与本地对比,那么本地文件通服务器对比,就先在PyCharm里面选择文件或文件夹,然后右键->Deployment->Sync with deployed to即可
PyCharm远程调试
在PyCharm中进行远程调试有两种选择:
- 使用远程的解释器
- 使用Python调试服务器
这里简单起见我只演示第一种,使用远程解释器,也就是使用服务器上面安装的python解释器。
配置远程Python解释器
选择File | Settings,选择Project | Project Interpreter,然后在右边,点击那个小齿轮设置,如下
然后点击”Add Remote”,填写主机的ssh配置

如果之前配置过SFTP的话就直接选“Deployment configuration”,然后选择刚刚的模板名称就可以了,由于我上面配置过就直接选模板, 这里请仔细看我的Python解释器是虚拟环境virtualenv,这个要在服务器上面先创建好虚拟环境。
开始调试
完成之后选择这个远程的解释器作为工程的解释器即可,然后配置一个运行实例,打断点调试。 这里我以另外一个django工程为例来说明,名字为zspace,因为用一个web工程来说明更具代表性。
选择“Run/Debug Configuration”,添加一个“Django server”,然后配置像下面这样写

请注意图中标出的几个点,具体什么意思就不用多解释了吧,^_^
然后你就可以像本地调试一样打断点做调试了。这个步骤太简单就不截图了,记得修改源码后同步到服务器继续下一次的调试。
pycharm 调试celery

kafka message 传给celery worker 之后,message变成了一个字典,message.value不能使用,只能使用message["value"].
ref: https://stackoverflow.com/questions/29312809/how-do-i-enable-remote-celery-debugging-in-pycharm/48868014#48868014
https://stackoverflow.com/questions/37150910/how-can-i-use-pycharm-to-locally-debug-a-celery-worker
celery 启动:
celery -A <app_name> worker -c 3 -l INFO # 启动3个worker,3个进程
celery -A <app_name> worker -l INFO -P gevent -c 1000 # 使用gevent启动,worker一个,gevent并发数1000,只有一个进程
celery -A <app_name> multi start 2 -l INFO -P gevent -c 1000 -Q <queue_name> # 启动2个gevent worker,每一个具有1000并发度,消费<queue_name>制定的队列
celery -A <app_name> multi start 4 -l INFO -P gevent -c:1-3 1000 -c:4 200 -Q:1-2 myQueue1 -Q:3 myQueue2 -Q:4 myQueue3 # 启动4个gevent worker,1-4具有1000并发度,4具有200并发度,1-2消费队列myQueue1, 3消费队列myQueue2,4消费队列myQueue3.
仅仅远程调试的配置信息:

ref: https://stackoverflow.com/questions/28690211/celery-gevent-pool-hangs-after-1000-tasks-execution
python远程调试及celery调试的更多相关文章
- 在ubunut下使用pycharm和eclipse进行python远程调试
我比较喜欢Pycharm,因为这个是JetBrains公司出的python IDE工具,该公司下的java IDE工具--IDEA,无论从界面还是操作上都甩eclipse几条街,但项目组里有些人使用e ...
- 使用IntelliJ IDEA进行Python远程调试的需求(未完)
使用IntelliJ IDEA进行Python远程调试的需求(未完) 在研究深度学习Machlearning时,有时候需要借助ubuntu搭建的tensorflow环境,另外也有越来越多的运算程序只能 ...
- python基础===利用PyCharm进行Python远程调试(转)
原文链接:利用PyCharm进行Python远程调试 背景描述 有时候Python应用的代码在本地开发环境运行十分正常,但是放到线上以后却出现了莫名其妙的异常,经过再三排查以后还是找不到问题原因,于是 ...
- pycharm远程linux开发和调试代码
pycharm是一个非常强大的python开发工具,现在很多代码最终在线上跑的环境都是linux,而开发环境可能还是windows下开发,这就需要经常在linux上进行调试,或者在linux对代码进行 ...
- 利用GDB在远程开发机进行调试
由于一些环境的制约,很多同学都可能需要在开发机上进行调试,但由于开发机资源的限制,在开发机上直接进行本地的GDB环境配置就成了难题,这个时候其实我们可以利用GDB中自带的gdbserver工具就可以进 ...
- [Python学习笔记][第八章Python异常处理结构与程序调试]
1/30 第八章Python异常处理结构与程序调试 异常处理 try-except结构 try: try块 except Exception: except块 try-except-else结构 tr ...
- 在 Python 中使用 GDB 来调试 转载
2013/11/01 | Comments 大约一年前,我接触了 Java 中的 Btrace 能够不停机查看线上 JVM 运行情况的特性让我艳羡不已. 另外还有强悍的 jStack 和 jConso ...
- Python IDLE 的使用与调试
Python IDLE 是Python 安装包自带的集成开发环境.IDLE集成了Python 解释器.编辑器与调试器.适用于初学者了解Python 语法知识.1.使用 Python IDLE 编辑Py ...
- Python:笔记(5)——错误、调试和测试
Python:笔记(5)——错误.调试和测试 错误处理 1.TRY语句 这个和Java中的语法是及其相似的,catach换成except. 说明:同样,不管有没有错误,fianlly都会执行的! 补充 ...
随机推荐
- 【转】每天一个linux命令(36):diff 命令
原文网址:http://www.cnblogs.com/peida/archive/2012/12/12/2814048.html diff 命令是 linux上非常重要的工具,用于比较文件的内容,特 ...
- mac下hbase安装
出处:https://www.jianshu.com/p/510e1d599123 安装到的路径:/usr/local/Cellar/hbase/1.2.6 linux操作: linux命令 作用 . ...
- Cropperjs 插件知识点
cropper.js 通过 canvas 实现图片裁剪,最后再通过 canvas 获取裁剪区域的图片base64串. 1. Container 容器 2. canvas 图片 3. crop 裁剪框
- 后台调用前台JS(查看客户端IE版本)
1.前端代码 </form> //注意放在form下面<script> function readRegedit() { var obj = n ...
- 【android】 adb logcat命令查看并过滤android输出log
cmd命令行中使用adb logcat命令查看android系统和应用的log,dos窗口按ctrl+c中断输出log记录. logcat日志中的优先级/tag标记: android输出的每一条日志都 ...
- 转Python 和C#的交互
http://www.cnblogs.com/wilber2013/category/708919.html IronPython和C#交互 IronPython是一个.NET平台上的Python ...
- VBox修改uuid
1.使用VBoxManage命令时,需要先在命令行中切换到VirtualBox的安装目录下 2.修改vdi的uuid:VBoxManage internalcommands sethduuid D: ...
- SQL 计算某月有多少天
今天用SQL Server 2005写查询语句,要求计算一个月平均每天发生的金额.以前往往喜欢查询相关的所有列,在代码中进行计算,还没有在SQL中写过. 第一印象就是:要考虑到润年还是平年,再判断是大 ...
- ssl证书(https) iis 配置安装
因客户给的 cer的文件 导入提示 失败,所以用 了 客户给的 crt的格式的证书. 安装证书操作如下:iis>>服务器证书>>右侧菜单-完成证书申请>>选择 本文 ...
- git: fatal: Could not read from remote repository
This is probably an Intellij problem. Your key are managed natively by ssh, and Intellij has it's ow ...