我正在尝试使用celery和redis队列来为我的Django应用执行任务。Supervisord通过安装在主机上apt- get
,而celery驻留在我系统上的特定虚拟环境中,通过`pip安装。
结果,我似乎无法celery
通过supervisor运行命令。如果我从virtualenv内部运行它,则在外部运行良好,但不能正常运行。如何使其在当前设置下运行?解决方案是否只是celery
通过apt-
get而不是在virtualenv内部安装?请指教。
我在/etc/supervisor/conf.d中的celery.conf是:
[program:celery]
command=/home/mhb11/.virtualenvs/myenv/local/lib/python2.7/site-packages/celery/bin/celery -A /etc/supervisor/conf.d/celery.conf -l info
directory = /home/mhb11/somefolder/myproject
environment=PATH="/home/mhb11/.virtualenvs/myenv/bin",VIRTUAL_ENV="/home/mhb11/.virtualenvs/myenv",PYTHONPATH="/home/mhb11/.virtualenvs/myenv/lib/python2.7:/home/mhb11/.virtualenvs/myenv/lib/python2.7/site-packages"
user=mhb11
numprocs=1
stdout_logfile = /etc/supervisor/logs/celery-worker.log
stderr_logfile = /etc/supervisor/logs/celery-worker.log
autostart = true
autorestart = true
startsecs=10
stopwaitsecs = 600
killasgroup = true
priority = 998
我的Django项目的文件夹结构为:
/home/mhb11/somefolder/myproject
├── myproject
│ ├── celery.py # The Celery app file
│ ├── __init__.py # The project module file (modified)
│ ├── settings.py # Including Celery settings
│ ├── urls.py
│ └── wsgi.py
├── manage.py
├── celerybeat-schedule
└── myapp
├── __init__.py
├── models.py
├── tasks.py # File containing tasks for this app
├── tests.py
└── views.py
如果我status
通过supervisorctl 进行检查,则command
在尝试在celery.conf中运行时出现致命错误。救命!
ps请注意,mhb11
如果有必要,用户没有root特权。而且,/etc/supervisor/logs/celery- worker.log
是空的。而且里面supervisord.log
相关的错误我看到的是INFO spawnerr: can't find command '/home/mhb11/.virtualenvs/redditpk/local/lib/python2.7/site- packages/celery/bin/celery'
。
Celery二进制文件的路径是myenv/bin/celery
您正在使用myenv/local/lib/python2.7/site- packages/celery/bin/celery
。
因此,如果您在终端上尝试传递给主管的命令(command = xxx),则应该得到相同的错误。
您需要将command=xxx
celery.conf中的替换为
command=/home/mhb11/.virtualenvs/myenv/bin/celery -A myproject.celery -l info
请注意,我还-A
用celery应用程序代替了参数,而不是超级用户配置。这Celery应用相关项目目录集celery.conf
与
directory = /home/mhb11/somefolder/myproject
附带说明一下 ,如果您将Celery与Django一起使用,则可以使用Django的celery管理celery
manage.py
,无需直接调用celery。喜欢
python manage.py celery worker
python manage.py celery beat
有关详细信息,请在此处阅读Django Celery的介绍。
我的主机是Windows 10 安装了运行Ubuntu的虚拟机 启动VM后,我为Ubuntu安装了docker Pull images(odoo和postgres),并通过localhost:8069成功启动了odoo应用程序。我切换回我的主机Windows 10。 如何从Windows 10连接我的odoo应用程序 此外,我的同事如何在同一网络上访问我的odoo应用程序 希望你能帮助我,谢谢:)
我已经正确地设置了Docker,并运行了一些容器没有问题。现在我试着设置邮件。我试了两个: 1 https://hub.docker.com/r/paintedfox/postgresql/ 2 https://hub.docker.com/_/postgres/ 我已尝试在VirtualBox中为容器设置端口转发。 我还尝试了机器主机,如Kitematic:192.168.99.100所示
我有一个大型java应用程序,在不同的类中有5个主要方法。我想将此应用程序作为docker容器运行。从DockerHub OpenJDK映像中,我启动了Dockerfile,如下所示 我想添加行来运行主要方法。没有Docker,我使用下面的行运行应用程序 是否可以在一个docker容器中运行上述场景?如果可能,当Dockerfile中只能有一条和指令时,如何实现这一点?
我有一个Spring引导罐文件,里面有一个清单文件,如下所示 其中有一个名为(打包在jar中的BOOT-INF/classes文件夹下)。我试图在Windows机器上从命令行运行Initiator类,如下所示 但运气不好。我还尝试在上面的命令中提到classpath作为 但它仍然不起作用。 我做错了什么? 发起者。JAVA 更新: 类被打包在BOOT-INF/class文件夹下。当我在jar根目录
问题内容: 我可以在主机上运行docker命令吗?我安装在Docker容器中,现在可以以某种方式在主机上使用命令(在后台使用Docker容器的aws)吗? 我的情况是这样的:我在生产主机上有数据库备份。现在我有Jenkins cron作业,它将从db容器中获取sql文件,并将其放入服务器文件夹中。现在我还希望jenkins将此备份文件上传到AWS存储上,但是在主机上我没有安装aws,也不想在主机上
是否可以在 Ansible 主机上运行命令? 我的场景是,我想从内部托管的git服务器(并且不能在公司防火墙之外访问)进行结帐。然后我想将结账(tarbated)上传到正式服(托管在外部)。 目前,我正在考虑运行一个脚本,执行签出、tarballs,然后运行部署脚本-但如果我可以将其集成到Ansible中,那将是更好的选择。