进程不会在celery中使用Multiprocessing模块生成

时间:2017-09-27 08:55:08

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

我有一个非常标准的设置: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. 我们可以在芹菜中使用多处理模块吗?

  2. 多处理是否存在芹菜限制?如果没有限制,为什么不产生过程?

  3. 先谢谢你。

1 个答案:

答案 0 :(得分:0)

试试这个:

@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