Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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_Logging_Subprocess_Celery_Python Multithreading - Fatal编程技术网

Python 我可以记录一些子流程调用的流式输出并在其前面添加标签,但不能记录启动芹菜工作者的子流程调用

Python 我可以记录一些子流程调用的流式输出并在其前面添加标签,但不能记录启动芹菜工作者的子流程调用,python,logging,subprocess,celery,python-multithreading,Python,Logging,Subprocess,Celery,Python Multithreading,我的最终目标是:我想要一个Python进程,它可以生成一个Flask应用程序、一个芹菜工人、一个Redis服务器,甚至可能最终生成一个Webpack服务器。到现在为止,一直都还不错。我还希望能够截取这些进程记录的每一行,并预先添加一个彩色编码标签,以便在终端中很容易地区分来自哪个进程的输出。这是我真正挣扎的地方 以下是最接近工作原理的方法的简化版本(根据SO答案改编): 但通常我也会看到一个蓝色的ascii芹菜标志,一些配置信息,以及注册芹菜函数的列表,这些都不见了。另一方面,如果我将start

我的最终目标是:我想要一个Python进程,它可以生成一个Flask应用程序、一个芹菜工人、一个Redis服务器,甚至可能最终生成一个Webpack服务器。到现在为止,一直都还不错。我还希望能够截取这些进程记录的每一行,并预先添加一个彩色编码标签,以便在终端中很容易地区分来自哪个进程的输出。这是我真正挣扎的地方

以下是最接近工作原理的方法的简化版本(根据SO答案改编):

但通常我也会看到一个蓝色的ascii芹菜标志,一些配置信息,以及注册芹菜函数的列表,这些都不见了。另一方面,如果我将
start\u芹菜
更改为:

def start_celery():
    subprocess.run(['celery', '-A', '<my_module>.run_celery:celery', 'worker', '--pool=gevent', '--concurrency=500', '--loglevel', 'info'])
def start_芹菜():
子进程.run(['celery','-A','.run_celery:celery','worker','-pool=gevent','-concurrency=500','-loglevel','info']))
然后从芹菜初始化的目录中执行该文件,我会看到我所有的芹菜输出


这是什么原因?芹菜的输出是否通过某种方法打印到我的屏幕上,而不是输入到标准输出?这就是我看不到它的原因吗

芹菜产生自己的进程,而不是由您控制(您将控制主进程,而不是实际产生的工作进程)。有两种方法可以实现您想要的:(1)docker compose或(2)修改芹菜记录器设置以预先设置您想要的内容。谢谢--我正在研究选项1。
[2019-12-28 10:17:00,563: INFO/MainProcess] mingle: searching for neighbors
[2019-12-28 10:17:01,628: INFO/MainProcess] mingle: all alone
[2019-12-28 10:17:01,650: INFO/MainProcess] celery@Katies-MacBook-Air.local ready.
[2019-12-28 10:17:01,665: INFO/MainProcess] pidbox: Connected to redis://localhost:6379//.
def start_celery():
    subprocess.run(['celery', '-A', '<my_module>.run_celery:celery', 'worker', '--pool=gevent', '--concurrency=500', '--loglevel', 'info'])