Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.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_Celery_Celerybeat - Fatal编程技术网

Python 运行芹菜工人和芹菜打线

Python 运行芹菜工人和芹菜打线,python,celery,celerybeat,Python,Celery,Celerybeat,我用芹菜来完成一些时间触发的任务。使用普通的命令行方法,我可以轻松地生成任务并执行它们。为此,我必须创建两个守护进程,一个用于芹菜节拍,另一个用于芹菜工人 现在,虽然芹菜确实解决了我创建和执行时间触发任务的问题,但它为我的系统增加了两个守护进程。我已经为我的模块运行了一个守护进程,我想重用它(向现有模块中添加celery worker和beat作为线程)。有办法吗?您可以使用app.worker\u main()将worker作为线程运行 from celeryconfig import app

我用芹菜来完成一些时间触发的任务。使用普通的命令行方法,我可以轻松地生成任务并执行它们。为此,我必须创建两个守护进程,一个用于芹菜节拍,另一个用于芹菜工人


现在,虽然芹菜确实解决了我创建和执行时间触发任务的问题,但它为我的系统增加了两个守护进程。我已经为我的模块运行了一个守护进程,我想重用它(向现有模块中添加celery worker和beat作为线程)。有办法吗?

您可以使用
app.worker\u main()
将worker作为线程运行

from celeryconfig import app # config file you must have build earlier where app = Celery(), object of Celery class

def worker():
    # Arguments you give on command line
    argv = [
        'worker','-A','<module>.tasks',
        '-P','gevent',     # Would probably need this argument if running with other Greenlets
        '--loglevel=info']
    app.worker_main(argv)
因为您可以从命令行运行它,所以我假设您已经为
芹菜
类(在文档中通常称为
app
)构建了一个对象。您可以尝试以下代码以线程的形式运行worker

from celeryconfig import app # config file you must have build earlier where app = Celery(), object of Celery class

def worker():
    # Arguments you give on command line
    argv = [
        'worker','-A','<module>.tasks',
        '-P','gevent',     # Would probably need this argument if running with other Greenlets
        '--loglevel=info']
    app.worker_main(argv)
芹菜类是用
/usr/local/lib/python2.7/dist-packages/芹菜/app/base.py
编写的。尝试以与worker相同的方式使用它(
app.beat_main
带参数)。希望它对你也有用