Python Django、RabbitMQ和;芹菜-为什么芹菜会在我在开发中更新Django代码后运行旧版本的任务?
因此,我有一个Django应用程序,它偶尔会向芹菜发送一个任务以进行异步执行。我发现,当我在开发中处理代码时,Django开发服务器知道如何自动检测代码何时发生了更改,然后重新启动服务器,以便我可以看到更改。然而,我的应用程序的RabbitMQ/芹菜部分并没有注意到开发中的这些变化。如果我更改了稍后将在芹菜任务中运行的代码,芹菜将继续运行旧版本的代码。我能让它了解变化的唯一方法是:Python Django、RabbitMQ和;芹菜-为什么芹菜会在我在开发中更新Django代码后运行旧版本的任务?,python,django,rabbitmq,celery,django-celery,Python,Django,Rabbitmq,Celery,Django Celery,因此,我有一个Django应用程序,它偶尔会向芹菜发送一个任务以进行异步执行。我发现,当我在开发中处理代码时,Django开发服务器知道如何自动检测代码何时发生了更改,然后重新启动服务器,以便我可以看到更改。然而,我的应用程序的RabbitMQ/芹菜部分并没有注意到开发中的这些变化。如果我更改了稍后将在芹菜任务中运行的代码,芹菜将继续运行旧版本的代码。我能让它了解变化的唯一方法是: 阻止芹菜工人 停止兔子 重置RabbitMQ 启动RabbitMQ 将用户添加到我的Django应用程序配置为使用
最后,您不需要重新启动RabbitMQ。您只需重新启动芹菜工人即可使用新版本的Python代码。但是,如果新版本的代码正在更改消息中的数据,则可能必须清除队列。例如,芹菜工人可能正在接收邮件的版本1,但它希望接收到版本2。对不起,我也遇到了同样的问题。我通过
/etc/init.d/celeryd restart
重新启动工作进程。大多数情况下,它是有效的。但有时不会,即使我重新启动服务器。