为什么我不能通过应用程序路径启动芹菜
Why I can't start celery with a path to an app
我有一个 tasks.py
文件,我想将其提供给 Celery,以便它可以 运行 在后台运行。当我 cd
进入目录时,一切正常
celery -A tasks worker --loglevel=info
但是我想在 bash 脚本中 运行 这个,所以我必须指定应用程序的完整路径。但它似乎不起作用,即使路径是正确的
(tf_tasks) arthur@debian:~$ ls /data/tera_1/partage/Biomass_ML/
LICENSE model.hdf5 __pycache__ server.py tasks.py
(tf_tasks) arthur@debian:~$ celery -A "/data/tera_1/partage/Biomass_ML/tasks" worker --loglevel=info
Traceback (most recent call last):
File "/data/tera_1/partage/anaconda/envs/tf_tasks/bin/celery", line 10, in <module>
sys.exit(main())
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/celery/__main__.py", line 16, in main
_main()
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/celery/bin/celery.py", line 322, in main
cmd.execute_from_commandline(argv)
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/celery/bin/celery.py", line 496, in execute_from_commandline
super(CeleryCommand, self).execute_from_commandline(argv)))
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/celery/bin/base.py", line 273, in execute_from_commandline
argv = self.setup_app_from_commandline(argv)
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/celery/bin/base.py", line 479, in setup_app_from_commandline
self.app = self.find_app(app)
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/celery/bin/base.py", line 501, in find_app
return find_app(app, symbol_by_name=self.symbol_by_name)
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/celery/app/utils.py", line 359, in find_app
sym = symbol_by_name(app, imp=imp)
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/celery/bin/base.py", line 504, in symbol_by_name
return imports.symbol_by_name(name, imp=imp)
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/kombu/utils/imports.py", line 56, in symbol_by_name
module = imp(module_name, package=package, **kwargs)
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/celery/utils/imports.py", line 104, in import_from_cwd
return imp(module, package=package)
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named '/data/tera_1/partage/Biomass_ML/tasks'
我尝试使用双引号、单引号、指定 --app=
而不是 -A
、指定文件扩展名,但没有任何效果。
当使用 -A
(--app
) 启动 celery worker 时,我们应该将 python 路径传递给应用程序实例。例如
从/data/tera_1/partage/Biomass_ML/
目录,我们可以运行
celery -A tasks worker --loglevel=info
当从 shell 脚本 运行ning 时,您可以 cd 进入目录并 运行 它
cd /data/tera_1/partage/Biomass_ML/
celery -A tasks worker --loglevel=info
如果您必须从其他目录 运行,请将其添加到您的 python 路径
export PYTHONPATH="/data/tera_1/partage/Biomass_ML/:$PYTHONPATH"
celery -A tasks worker --loglevel=info
或者,如果您的整个路径是包含模块的有效 python 路径,那么我们可以 运行 它
celery -A data.tera_1.partage.Biomass_ML.tasks worker --loglevel=info
我有一个 tasks.py
文件,我想将其提供给 Celery,以便它可以 运行 在后台运行。当我 cd
进入目录时,一切正常
celery -A tasks worker --loglevel=info
但是我想在 bash 脚本中 运行 这个,所以我必须指定应用程序的完整路径。但它似乎不起作用,即使路径是正确的
(tf_tasks) arthur@debian:~$ ls /data/tera_1/partage/Biomass_ML/
LICENSE model.hdf5 __pycache__ server.py tasks.py
(tf_tasks) arthur@debian:~$ celery -A "/data/tera_1/partage/Biomass_ML/tasks" worker --loglevel=info
Traceback (most recent call last):
File "/data/tera_1/partage/anaconda/envs/tf_tasks/bin/celery", line 10, in <module>
sys.exit(main())
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/celery/__main__.py", line 16, in main
_main()
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/celery/bin/celery.py", line 322, in main
cmd.execute_from_commandline(argv)
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/celery/bin/celery.py", line 496, in execute_from_commandline
super(CeleryCommand, self).execute_from_commandline(argv)))
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/celery/bin/base.py", line 273, in execute_from_commandline
argv = self.setup_app_from_commandline(argv)
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/celery/bin/base.py", line 479, in setup_app_from_commandline
self.app = self.find_app(app)
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/celery/bin/base.py", line 501, in find_app
return find_app(app, symbol_by_name=self.symbol_by_name)
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/celery/app/utils.py", line 359, in find_app
sym = symbol_by_name(app, imp=imp)
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/celery/bin/base.py", line 504, in symbol_by_name
return imports.symbol_by_name(name, imp=imp)
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/kombu/utils/imports.py", line 56, in symbol_by_name
module = imp(module_name, package=package, **kwargs)
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/site-packages/celery/utils/imports.py", line 104, in import_from_cwd
return imp(module, package=package)
File "/data/tera_1/partage/anaconda/envs/tf_tasks/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named '/data/tera_1/partage/Biomass_ML/tasks'
我尝试使用双引号、单引号、指定 --app=
而不是 -A
、指定文件扩展名,但没有任何效果。
当使用 -A
(--app
) 启动 celery worker 时,我们应该将 python 路径传递给应用程序实例。例如
从/data/tera_1/partage/Biomass_ML/
目录,我们可以运行
celery -A tasks worker --loglevel=info
当从 shell 脚本 运行ning 时,您可以 cd 进入目录并 运行 它
cd /data/tera_1/partage/Biomass_ML/
celery -A tasks worker --loglevel=info
如果您必须从其他目录 运行,请将其添加到您的 python 路径
export PYTHONPATH="/data/tera_1/partage/Biomass_ML/:$PYTHONPATH"
celery -A tasks worker --loglevel=info
或者,如果您的整个路径是包含模块的有效 python 路径,那么我们可以 运行 它
celery -A data.tera_1.partage.Biomass_ML.tasks worker --loglevel=info