我有一个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
目前,我根据运行的环境取消对url的注释。
我的问题是,我如何传递到芹菜设置或额外的args中,以便设置正确的URL?
PS。。。我的意思不是将args传递给任务,即task(123),而是在启动芹菜时设置某种系统范围的变量。
i.e. celery -A tasks worker --loglevel=info -LOCALDEV
一种方法是将url设置为环境变量,并使用python os.environ
查看它是否已设置和/或设置默认值。
如果你有多个变量想要根据你的env进行配置:例如:demo、develop、production等等,你可以使用python文件并将你的所有变量存储在其中。然后当你的应用程序启动时,你可以根据命令行参数或env变量选择正确的设置文件。
以上建议是django框架如何处理您的问题。