下面介绍实现 autoreload 两种方式:

  • 使用 Watchdog

    Watchdog 的 watchmedo 命令可以监控某个目录下的文件修改,重新运行子进程。我们可以利用它实现 Celery worker 的自动重新运行。

你可以直接使用 start-celery-for-dev.py ,它就是基于 watchdog 实现的。

  • 使用 Django
    Django 本身有个机制是监控程序文件改变然后自动重新运行 runserver 命令,我们可以利用这个机制来实现:

在开发 Django 项目时,会需要经常执行它的 manage.py  任务。

其实在 IntelliJ IDEA(或者 PyCharm )中可以很方便地运行 manage.py 任务,如图:

20171204163518

IntelliJ IDEA(或PyCharm)可以很方便地执行 django manage.py

然后就可以在 console 窗口中直接输入想要运行的 task 的名称了:
20171204164219

django mssql SAVE TRANSACTION problem

django 使用 mssql 遇到“没有活动事务时,不能发出 SAVE TRANSACTION”的问题

这个问题有两个解决方法:

  • 第一种方法:provider 使用 SQLNCLI11
    SQLNCLI11 即 Microsoft® SQL Server® 2012 Native Client,下载并安装

    install SQLNCLI11

    安装 SQLNCLI11

    但我安装时碰到了 dll 缺失的问题,实在不想再折腾了,跳过。

    install SQLNCLI11 dll

    安装 SQLNCLI11 又遇到 dll 缺失的问题

     

  • 第二种方法:provider 使用 SQLOLEDB,设置 ATOMIC_REQUESTS 为 True
    打开 settings.py 在 DATABASES 下增加 ATOMIC_REQUESTS 的设置:

    20171202113004

    ‘ATOMIC_REQUESTS’:True,