【问题标题】:process is not spawning with Multiprocessing module in celery芹菜中的多处理模块未生成进程
【发布时间】:2017-09-27 08:55:08
【问题描述】:

我有一个非常标准的设置:Django + Rabbitmq + Celery。

我正在尝试使用 celery 中的标准 python 多处理模块生成一个进程。

我注意到进程本身并没有产生。没有产生该进程的原因可能是什么。这是代码:

import multiprocessing as mp
from celery.schedules import crontab
from celery.decorators import periodic_task

@periodic_task(run_every=crontab(minute='*/1'), name='test_process_celery')
def main():
data = config_read()
try:
    myqueue = mp.Queue(-1)
    mylog_process = mp.Process(target=test_logger_process, args=(myqueue,))
    mylog_process.start()
    . . .
    . . .
except Exception as e:
    raise
finally:
    mylog_process.join()
  1. 我们可以在 celery 中使用多处理模块吗?

  2. 多处理有 celery 限制吗?如果没有限制,为什么不产生进程?

在此先感谢您。

【问题讨论】:

    标签: multiprocessing celery python-multiprocessing celery-task celerybeat


    【解决方案1】:

    试试这个:

    @periodic_task(run_every=crontab(minute='*/1'), name='test_process_celery')
    def main():
        from multiprocessing import current_process
        current_process().daemon = False
    
        your_stuff()
    
        current_process().daemon = True
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-29
      • 2019-12-07
      • 2020-04-25
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      • 1970-01-01
      • 2013-03-16
      相关资源
      最近更新 更多