如何更改 Celery beat 服务的默认路径?

How to change default path of Celery beat service?

我将 Celery 安装为 Windows 服务。我的代码将 *.pid 和 Celery 日志文件移动到另一个目录,但是我无法移动三个文件(celerybeat-schedule.bakcelerybeat-schedule.dircelerybeat-schedule.dat)。

我使用以下代码更改其他文件的默认路径:

command = '"{celery_path}" -A {proj_dir} beat -f "{log_path}" -l info --pidfile="{pid_path}" '.format(
celery_path=os.path.join(PYTHONSCRIPTPATH, 'celery.exe'),
proj_dir=PROJECTDIR,
# log_path_1=os.path.join(INSTDIR,'celery_2.log')),
log_path=os.path.join(tmpdir,'celery_'+cur_date_time+'.log'),
pid_path = os.path.join(tmpdir,'celerybeat_'+cur_date_time+'.pid'))

如何修改Celery beat服务的默认路径?

如果您执行 celery -A your.project.app beat --help,它会打印出非常有用的 CLI 帮助,您可以在其中找到问题的解决方案 - -s <path to the scheduler database file> 标志。

-s SCHEDULE, --schedule SCHEDULE
                      Path to the schedule database. Defaults to celerybeat-
                      schedule. The extension '.db' may be appended to the
                      filename. Default is celerybeat-schedule.

您所要做的就是将计划数据库文件的完整路径传递给您的 Celery 节拍进程。示例:-s C:/services/celery/celerybeat-schedule.db

我终于可以使用以下代码更改芹菜服务的路径。

command = '"{celery_path}" -A {proj_dir} beat -f "{log_path}" -l info --pidfile="{pid_path}" '.format(
            celery_path=os.path.join(PYTHONSCRIPTPATH, 'celery.exe'),
            proj_dir=PROJECTDIR,
            # log_path_1=os.path.join(INSTDIR,'celery_2.log')),
            log_path=os.path.join(CELERYDIR,'celery_'+cur_date_time+'.log'),
            # bak_path=os.path.join(CELERYDIR,'celerybeat-schedule'),
            pid_path = os.path.join(CELERYDIR,'celerybeat_'+cur_date_time+'.pid'))