Bug: ssl error with postgres and celery

Mads Kiilerich mads at kiilerich.com
Mon Nov 9 16:56:25 UTC 2020


On 11/5/20 1:11 AM, Mads Kiilerich wrote:
> On 11/3/20 5:08 PM, Valentin Kleibel wrote:
>> Hi,
>>
>> We are using kallithea with a postgres database on another server 
>> connected via ssl.
>> It seems that celery in version 4 uses prefork in its worker pool 
>> model now, which leads to issues with such a database connection: 
>
> I think you are right something is wrong.
>
> First, the celery-run will not only take a config file as parameter 
> and read it. It will also initialize the WSGI app and database 
> connection, before calling into celery. Effectively making it 
> pre-fork. I think you are right that we only should initialize things 
> after celery has forked and started worker processes.


The first changes on 
https://kallithea-scm.org/repos/kallithea/pull-request/292/_/celery_and_stuff 
do this. After some refactorings (that may or may not be essential for 
the change), I think the proper fix is in 
https://kallithea-scm.org/repos/kallithea-incoming/changeset/e32c37b84c53bc6342e7b4698cb06168a7bcff15 
.

I don't think we should have to dispose the engine. We just shouldn't 
initialize it pre-fork.

Does this work for you?

Disposing the engine for each task seems inefficient and shouldn't be 
necessary. As an alternative to your patch for disposing in dbsession, 
it could perhaps just dispose in 
kallithea.CELERY_APP.loader.on_worker_process_init .


> But also, it might be a bit odd that we have the celery-run entry 
> point. It would perhaps be better to somehow use "celery" as entry 
> point and let it call into Kallithea in each worker. But I haven't 
> investigated how feasible that would be.


This is still TODO.

There is still a lot of room for improvement, making sure that we use 
Celery in a simple and recommended way, avoiding the need for 
initializing Celery at *import* time, and upgrading to Celery 5. 
Contributions in this area would be welcome ;-)

/Mads




More information about the kallithea-general mailing list