我有一个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
答案 0 :(得分:1)
一种方法是将url设置为环境变量,并使用python os.environ
查看它是否已设置并设置为默认值。
如果您有多个变量,您想根据您的环境进行配置:即。演示,开发,生产等,您可以使用python文件并将所有变量存储在其中。然后,当您的应用程序启动时,您可以根据命令行参数或env变量选择正确的设置文件。
以上建议是django框架如何处理您的问题。