使用Python和Celery如何传入自定义args

时间:2014-11-10 13:50:05

标签: python celery

我有一个Celery任务,我使用celery -A tasks worker --loglevel=info在本地运行,或者有时它在实时服务器上运行。

@app.task
def example_task_calling_api():
      url = "http://127.0.0.1:8000/" 
      #  url = "http://www.example.com/api/"
      content = requests.get(url)
      #Do something with content etc

目前我根据我正在运行的环境取消注释网址。

我的问题是,如何将芹菜设置或额外的args传递给我设置正确的URL?

PS ......我不想将args传递给任务,即任务(123),但是在启动芹菜时会设置一些系统范围的变量。

i.e. celery -A tasks worker --loglevel=info -LOCALDEV

1 个答案:

答案 0 :(得分:1)

一种方法是将url设置为环境变量,并使用python os.environ查看它是否已设置并设置为默认值。

如果您有多个变量,您想根据您的环境进行配置:即。演示,开发,生产等,您可以使用python文件并将所有变量存储在其中。然后,当您的应用程序启动时,您可以根据命令行参数或env变量选择正确的设置文件。

以上建议是django框架如何处理您的问题。