Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 没有从对接芹菜中获得任何输出_Python_Django_Docker_Celery_Celerybeat - Fatal编程技术网

Python 没有从对接芹菜中获得任何输出

Python 没有从对接芹菜中获得任何输出,python,django,docker,celery,celerybeat,Python,Django,Docker,Celery,Celerybeat,我一直在编写两个类似的教程,并试图为我的Django项目创建一个计划任务,但我似乎无法从芹菜服务中获得任何输出 我已经将芹菜和Redis添加到requirements.txt Django==3.0.7 celery==4.4.7 redis==3.5.3 将芹菜、芹菜节拍和redis服务添加到docker compose.yaml 版本:“3.8” 服务: 隐藏物: 图片:redis:alpine 数据库: 图像:“postgis/postgis” 端口: - "5432:5432" 环境:

我一直在编写两个类似的教程,并试图为我的Django项目创建一个计划任务,但我似乎无法从芹菜服务中获得任何输出

我已经将芹菜和Redis添加到
requirements.txt

Django==3.0.7
celery==4.4.7
redis==3.5.3
将芹菜、芹菜节拍和redis服务添加到
docker compose.yaml

版本:“3.8”
服务:
隐藏物:
图片:redis:alpine
数据库:
图像:“postgis/postgis”
端口:
- "5432:5432"
环境:
POSTGRES_DB:POSTGRES
POSTGRES_用户:${DATABASE_DEFAULT_USERNAME}
POSTGRES_密码:${DATABASE_DEFAULT_PASSWORD}
网状物:
生成:。
端口:
- "8000:8000"
卷数:
-.:/app
取决于:
-缓存
-数据库
环境文件:
-环境署署长
队列:
生成:。
命令:芹菜-A api工作者-l信息
卷数:
-.:/app
链接:
-缓存
取决于:
-缓存
-数据库
调度程序:
生成:。
命令:芹菜-A api节拍-l信息
卷数:
-.:/app
链接:
-缓存
取决于:
-缓存
-数据库
芹菜.py
文件添加到
api/api/
目录中

导入操作系统
从芹菜进口芹菜
os.environ.setdefault('DJANGO\u SETTINGS\u MODULE','api.SETTINGS')
app=芹菜('api')
app.config_from_对象('django.conf:settings',namespace='芹菜')
app.autodiscover_tasks()
@app.task(bind=True)
def调试_任务(自身):
打印('Request:{0!r}'。格式(self.Request))
将以下内容添加到
api/api/\uuuuu init\uuuuu.py

from.芹菜导入应用程序作为芹菜应用程序
__全部(芹菜应用程序)
api/server/tasks.py
中创建了一个任务

导入日志
从芹菜导入共享任务
logger=logging.getLogger(_名称__)
@共享任务
def样本_任务():
debug('示例任务刚刚运行')
并将以下内容添加到
api/api/settings/base.py
base.py
导入
api/api/settings/\uuuu init\uuuu.py

cellery\u BROKER\u URL='2〕redis://cache:6379'
芹菜redis://cache:6379'
芹菜节拍表={
“样本任务”:{
'task':'server.tasks.sample_task',
“计划”:crontab(),
},
}
缓存
服务似乎启动良好(输出一堆日志,以“准备接受连接”结尾),但
队列
调度程序
服务似乎没有输出任何内容。当我运行
docker compose logs-f'queue'
docker compose logs-f'scheduler'
时,我得到以下输出

Attaching to
我可以从python控制台导入并运行
sample_task()
作为芹菜任务

>>从server.tasks导入示例任务
>>>示例_任务()
2020-09-10 13:47:15020服务器任务调试刚刚运行的示例任务。
>>>示例_task.delay()
那么我做错了什么?我错过了什么


更新 我取得了一点小小的进步。我一直在PyCharm中使用docker运行配置来构建项目,但没有意识到它被设置为只构建
web
服务;因此,队列和调度程序服务没有被构建

在我解决了这个问题之后,队列和调度程序服务输出的日志抱怨没有设置环境变量。因此,在将
env_file
属性添加到这两个服务之后,我现在可以附加到
api_queue_1
api_scheduler_1
,但仍然没有进一步的输出。

命令:芹菜-一个api工作者-l信息
logger.debug('示例任务刚刚运行')
你看到问题了吗<代码>::facepalm::

我使用
info
日志级别运行芹菜,但是日志输出使用
debug
日志级别,因此没有传播
debug
日志

我本以为我会看到芹菜的一些输出,即使是在信息日志级别,但我想不会。我仍然不知道为什么在docker容器的bash shell中运行芹菜命令时会看到输出,甚至在我更改日志级别之前