为了调试我在Heroku上看到的一个bug,而不是在我的本地计算机上,我正在尝试逐步调试。在
典型的import pdb; pdb.set_trace()
方法不适用于Heroku,因为您无法访问连接到应用程序的控制台,但显然您可以使用rpdb,pdb的“远程”版本。在
{cddb>安装在适当的位置。当我发出一个命中rpdb行的请求时,应用程序按预期挂起,我在heroku日志中看到以下内容:
pdb is running on 3d0c9fdd-c18a-4cc2-8466-da6671a72cbc:4444
好的,那么如何连接到正在运行的pdb?我尝试heroku run nc 3d0c9fdd-c18a-4cc2-8466-da6671a72cbc 4444
尝试从heroku的系统中连接到命名主机,但这只是立即退出,状态为1,没有错误消息。在
所以我的具体问题是:我现在如何连接到这个远程pdb?在
一般的相关问题是:对于运行在Heroku上的应用程序,这种交互式调试方法是否正确?有更好的方法吗?在
注意:注意,我现在也尝试过类似的方法来处理芹菜,但没有效果。celery的rdb(远程pdb包装器)默认使用的是localhost
,当它是Heroku时,您无法访问它。我曾尝试过将CELERY_RDB_HOST
环境变量用于Heroku上托管的网站的域,但这会出现“cannotassignrequestedaddress”错误。所以这是相同的基本问题——如何连接到运行在Heroku上的远程pdb实例?在
为了回答您的第二个问题,我会根据错误的类型(浏览器端、后端或视图)进行不同的操作。对于后端和视图测试(unittests),类似这样的东西对您有用吗?在
然后在ipython中调试:
^{pr2}$即使您不运行django应用程序,也可以将调试器作为ipython的命令行选项运行,这样任何python错误都会将您拖到调试器:
前端测试是一个完全不同的游戏,您应该研究像selenium这样的工具。我认为还有一个“色拉”测试套件模块,使前端测试更容易编写。编写一个中断的测试是调试的第一步(或者有人告诉我;)。在
如果bug看起来很简单,您可以使用类似的方法来执行旧的“打印并运行”
并使用getsentry.com网站或同等的监控工具,或只是:
我想你在找这样的东西:
http://docs.celeryproject.org/en/latest/tutorials/debugging.html
相关问题 更多 >
编程相关推荐