Sounds like 
https://github.com/apache/incubator-airflow/blob/v1-10-test/airflow/config_templates/default_celery.py#L31
 
<https://github.com/apache/incubator-airflow/blob/v1-10-test/airflow/config_templates/default_celery.py#L31>
 should be guarded in some way to only do that for a redis:// and sqs:// 
backends.


> On 24 May 2018, at 16:13, Craig Rodrigues <rodr...@crodrigues.org> wrote:
> 
> Ash,
> 
> According to this:
> http://docs.celeryproject.org/en/latest/userguide/configuration.html#broker-settings
> visibility_timeout is supported by Redis and SQS.
> 
> --
> Craig
> 
> 
> On Thu, May 24, 2018 at 8:07 AM Craig Rodrigues <rodr...@crodrigues.org>
> wrote:
> 
>> Ash,
>> 
>> Thanks again.  You are leading me on the right path!
>> 
>> I can prepare a patch to move the ssl_ options into the celery section.
>> 
>> What about visbility_timeout?  The error I am getting is:
>> 
>> File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/strategies.py",
>> line 160, in create
>>    engineclass.__name__))
>> TypeError: Invalid argument(s)
>> 'ssl_key','ssl_cert','ssl_active','visibility_timeout','ssl_cacert' sent to
>> create_engine(), using configuration
>> MySQLDialect_mysqldb/QueuePool/Engine.  Please check that the keyword
>> arguments are appropriate for this combination of components.
>> 
>> 
>> So it looks like visibility_timeout does not work with sqla as well.
>> --
>> Craig
>> 
>> 
>> On Thu, May 24, 2018 at 2:17 AM Ash Berlin-Taylor <
>> ash_airflowl...@firemirror.com> wrote:
>> 
>>> Yes, you would need to duplicate a chunk of the default_celery in your
>>> copy right now. But you can just make it have the values you want - so it
>>> would be about 10 lines in total.
>>> 
>>> It seems that between AIRFLOW-966 and AIRFLOW-1840 things got a little
>>> bit out of sync in the default .cfg and the celery .py - the .py is looking
>>> for celery->ssl_* but the default config puts it in
>>> celery_broker_transport_options->ssl_*. Looking at the celery config option
>>> it looks like they aren't actually options for the other transports, it's
>>> just that they don't complain about the extra options. I think the fix is
>>> just to move them up to the celery section.
>>> 
>>> -ash
>>> 
>>> 
>>>> On 24 May 2018, at 07:21, Craig Rodrigues <rodr...@crodrigues.org>
>>> wrote:
>>>> 
>>>> Ash,
>>>> 
>>>> Thanks!   You put me on the right track.
>>>> Unfortunately, there is a lot of logic in
>>>> airflow/config_templates/default_celery.py that I need,
>>>> and if I was to come up with my own class to replace:
>>>> 
>>>> celery_config_options =
>>>> airflow.config_templates.default_celery.DEFAULT_CELERY_CONFIG
>>>> 
>>>> then I would basically have to rewrite my own version of
>>> default_celery.py
>>>> 
>>>> Also, in airflow/config_templates/default_airflow.cfg, there is this:
>>>> 
>>>> [celery_broker_transport_options]
>>>> # The visibility timeout defines the number of seconds to wait for the
>>>> worker
>>>> # to acknowledge the task before the message is redelivered to another
>>>> worker.
>>>> # Make sure to increase the visibility timeout to match the time of the
>>>> longest
>>>> # ETA you're planning to use. Especially important in case of using
>>> Redis
>>>> or SQS
>>>> visibility_timeout = 21600
>>>> 
>>>> # In case of using SSL
>>>> ssl_active = False
>>>> ssl_key =
>>>> ssl_cert =
>>>> ssl_cacert =
>>>> 
>>>> 
>>>> None of those options work if using an sqla backend for celery
>>> broker_url.
>>>> 
>>>> I need to think about this, but this needs to be cleaned up before
>>>> Airflow 1.10 is released.  In
>>> airflow/config_templates/default_airflow.cfg
>>>> there is this:
>>>> 
>>>> broker_url = sqla+mysql://airflow:airflow@localhost:3306/airflow
>>>> 
>>>> 
>>>> So sqla is specified as the default broker_url for celery.
>>>> A lot of people (including where I work) have used this template to set
>>> up
>>>> Airflow + Celery, and even though sqla is an "experimental" broker_url,
>>>> it actually works pretty well.
>>>> 
>>>> Now in airflow 1.10, something that was very easy to set up is now
>>> really
>>>> complicated and unintuitive.
>>>> 
>>>> Would it be OK to change the airflow code so that
>>>> in airflow/config_templates/default_airflow.cfg, all the options in
>>>> [celery_broker_transport_options] are commented out?
>>>> And if someone is running Redis, they would have to add those
>>>> options in their own airflow.cfg file?
>>>> 
>>>> Bolke, do you have any comments?
>>>> 
>>>> --
>>>> Craig
>>>> 
>>>> On Tue, May 22, 2018 at 1:50 AM Ash Berlin-Taylor <
>>>> ash_airflowl...@firemirror.com> wrote:
>>>> 
>>>>> To use with the SQLA backend to celery you need to override the options
>>>>> Airflow passes to Celery. Those come from
>>>>> 
>>> https://github.com/apache/incubator-airflow/blob/v1-10-test/airflow/config_templates/default_celery.py
>>>>> 
>>>>> Since you don't want most/all of those options (and there is no way in
>>> the
>>>>> config file to _remove_ a setting) you will have to point airflow to a
>>>>> different file for the celery config:
>>>>> 
>>>>> This line in the config is what you will need to change:
>>>>> 
>>>>>   # Import path for celery configuration options
>>>>>   celery_config_options =
>>>>> airflow.config_templates.default_celery.DEFAULT_CELERY_CONFIG
>>>>> 
>>>>> If you create something like config/celery_config.py containing:
>>>>> 
>>>>> 
>>>>>   CELERY_CONFIG = {
>>>>>       # Just the options you want to set
>>>>>   }
>>>>> 
>>>>> 
>>>>> (config/ should exist along side your dags/ folder, and I think it
>>> should
>>>>> be added to the python path already). You can then set this in the
>>> config:
>>>>> 
>>>>>   celery_config_options = celery_config.CELERY_CONFIG
>>>>> 
>>>>> That should give you complete control
>>>>> 
>>>>> 
>>> 
>>> 

Reply via email to