如果我在芹菜运行时对tasks.py进行了更改,是否有一种机制可以重新加载更新的代码?或者我必须关闭芹菜重新装载?
我读过芹菜--autoreload在旧版本中有一个参数,但我在当前版本中找不到它:
celery: error: unrecognized arguments: --autoreload
我在CentOS 7上使用Django 10,RabbitMQ和Celery 4运行一个站点.
我的Celery Beat和Celery Worker实例由主管控制,我正在使用django celery数据库调度程序.
我在Django-admin中使用cronsheduler计划了一个cron样式的任务.
当我开始芹菜殴打和工人实例时,工作按预期开火.
但是如果在Django-admin中更改计划时间,那么除非我重新启动celery-beat实例,否则不会获取更改.
有什么我缺少或我需要编写自己的调度程序吗?
Celery Beat与'django_celery_beat.schedulers.DatabaseScheduler'一起从数据库加载计划.根据以下文档https://media.readthedocs.org/pdf/django-celery-beat/latest/django-celery-beat.pdf,这将迫使Celery Beat重新加载:
以特定间隔(例如,每5秒)运行的计划.•django_celery_beat.models.CrontabSchedule包含cron中的条目的字段的计划:分钟星期几day_of_month month_of_year.
django_celery_beat.models.PeriodicTasks此模型仅用作跟踪计划更改时间的索引.每当您更新PeriodicTask时,此表中的计数器也会递增,这会告诉芹菜节拍服务从数据库重新加载计划.如果批量更新定期任务,则需要手动更新计数器:
from django_celery_beat.models import PeriodicTasks
PeriodicTasks.changed()
Run Code Online (Sandbox Code Playgroud)
从上面我可以看到Celery Beat流程定期检查表格是否有任何变化.
当我的项目中的源文件更改时,django服务器将重新加载。我想将此扩展到非Python源文件。我使用本地SQL查询,这些查询存储在单独的文件(例如big_select.sql)中,并且我希望服务器在这些文件更改时重新加载。
我在Windows上使用django。
我尝试添加.py扩展名,但是没有用。