我在服务器上的虚拟环境中运行了一个基于烧瓶的API.我希望我的API能够调用celery任务,但是Celery已安装并且已经在API运行所在的虚拟环境之外用于其他目的.我如何导入我的任务模块,使其可以在virtualenv内部使用.
抱歉,使用Virtualenv是一个愚蠢的问题对我来说是新的.
解决方法:
您只需要安装在virtualenv内加载“任务”模块所需的依赖项(例如pip install celery).
发送任务的行为与virtualenv并没有真正的关系,它只需要与正确的代理URL进行通信(但是,例如,使用Django数据库作为代理时,这可能会有些复杂).
实际上,您也可以轻松地通过名称发送任务:
$python
>>> from celery import Celery
>>> Celery(broker='amqp://').send_task('tasks.add', (2, 2))
因此,代理是唯一需要的通信点,但是task.py模块和Celery应用程序可以包含影响任务发送方式的配置(例如路由到不同的队列,设置默认队列名称和队列任务配置,等等).