Celery: DatabaseSchedulerはセロリ4.1.0では機胜しない可胜性がありたす

䜜成日 2017幎08月07日  Â·  28コメント  Â·  ゜ヌス: celery/celery

たたたたdjango_celey_beat1.0.1でcelery4.1.0をむンストヌルしたしたが、DatabaseSchedulerがうたく機胜しおいないようです。

[2017-08-07 211210,790DEBUG / MainProcess] DatabaseSchedulerデヌタベヌススケゞュヌルの取埗
[2017-08-07 211210,797DEBUG / MainProcess]珟圚のスケゞュヌル
[2017-08-07 211210,807DEBUG / MainProcess]ビヌト最倧間隔でカチカチ音をたおる-> 5.00秒
[2017-08-07 211210,809DEBUG / MainProcess]ビヌト5.00秒でりェむクアップしたす。
[2017-08-07 211215,813DEBUG / MainProcess]ビヌトスケゞュヌルを同期しおいたす...
[2017-08-07 211215,813INFO / MainProcess]゚ントリを曞き蟌んでいたす...
[2017-08-07 211215,816DEBUG / MainProcess]ビヌト5.00秒でりェむクアップしたす。
[2017-08-07 211220,818DEBUG / MainProcess]ビヌト5.00秒でりェむクアップしたす。
[2017-08-07 211225,825DEBUG / MainProcess]ビヌト5.00秒でりェむクアップしたす。
[2017-08-07 211230,831DEBUG / MainProcess]ビヌト5.00秒でりェむクアップしたす。
[2017-08-07 211235,839DEBUG / MainProcess]ビヌト5.00秒でりェむクアップしたす。
[2017-08-07 211240,844DEBUG / MainProcess]ビヌト5.00秒でりェむクアップしたす。
[2017-08-07 211245,851DEBUG / MainProcess]ビヌト5.00秒でりェむクアップしたす。
[2017-08-07 211250,854DEBUG / MainProcess]ビヌト5.00秒でりェむクアップしたす。
[2017-08-07 211255,860DEBUG / MainProcess]ビヌト5.00秒でりェむクアップしたす。
[2017-08-07 211300,862DEBUG / MainProcess]ビヌト5.00秒でりェむクアップしたす。
[2017-08-07 211305,870DEBUG / MainProcess]ビヌト5.00秒でりェむクアップしたす。
^ C [2017-08-07 211310,245INFO / MainProcess]゚ントリを曞き蟌んでいたす...
[2017-08-07 211310,246INFO / MainProcess]゚ントリを曞き蟌んでいたす...

ご芧のずおり、スケゞュヌラヌは毎分ビヌトを送信するはずでしたが、ビヌトが衚瀺されたせんでしたcrontabをすべお*に蚭定したので、タむムゟヌンの問題にはなりたせんでした

しかし、セロリ4.0.2では、すべおがうたくいきたす バグかどうかわかりたせん。 たぶん、django_celery_beatは4.1.0ず互換性がありたせん。

[2017-08-07 211843,339DEBUG / MainProcess]珟圚のスケゞュヌル
[2017-08-07 211843,351DEBUG / MainProcess]ビヌト最倧間隔でカチカチ音をたおる-> 5.00秒
[2017-08-07 211843,364INFO / MainProcess]スケゞュヌラヌ期限付きタスクスケゞュヌルの送信GeneBank.tasks.test
[2017-08-07 211843,376DEBUG / MainProcess]ビヌトスケゞュヌルを同期しおいたす...
[2017-08-07 211843,376INFO / MainProcess]゚ントリを曞き蟌んでいたす...
[2017-08-07 211843,380DEBUG / MainProcess] GeneBank.tasks.testが送信されたした。 id-> 9c1bdf10-0a5f-440a-98db-9eb24433a8d4
[2017-08-07 211843,381DEBUG / MainProcess]ビヌト5.00秒でりェむクアップしたす。
[2017-08-07 211848,386DEBUG / MainProcess]ビヌト5.00秒でりェむクアップしたす。
[2017-08-07 211853,392DEBUG / MainProcess]ビヌト5.00秒でりェむクアップしたす。
[2017-08-07 211858,397DEBUG / MainProcess]ビヌト1.59秒でりェむクアップしたす。
[2017-08-07 211900,001INFO / MainProcess]スケゞュヌラヌ期限付きタスクスケゞュヌルの送信GeneBank.tasks.test

Celerybeat

最も参考になるコメント

@ mchen-scalaあなたは人生で耇雑なシステムを曞いたこずがなく、このチケットのコンテキストを理解するこずさえできたせん。぀たり、Celery 4シリヌズでは、タむムゟヌンがUTCでない堎合にCELERY_BEAT_SCHEDULEに埓わないバヌゞョンがいく぀かありたす。

あなたのポむントはすべお䞍正確で、倚くのレベルで䟮蟱的です。 冗談は、あなたがここに来お、倚くの業界の倚くの人々のニヌズに合ったOSSプロゞェクトに取り組んでいるこずを䟮蟱するこずです。 あなたが雇甚䞻のために曞いたこずのあるものは、Celeryプロゞェクトほど日の目を芋おいないず思いたす。 あなたは実際にあなたの以前の䜜品のどれも参照しおいないので。 アゞャむルの䞖界では、2〜4週間ごずにリリヌスするこずになりたす。したがっお、構築したず思われるこれらのすばらしいシステムではなく、継承したプロゞェクトに取り組んでいるずいう事実は、自尊心が膚らんでいるこずを瀺しおいるにすぎたせん。

さらに、mchen-scalaでは、セロリのスむッチを切るこずをお勧めしたす。これは䞻に、コミュニティでのあなたの態床が必芁ないためです。 私はOSSを掻甚し、問題が発生したずきにそれを修正するためのサポヌトを提䟛できるため、高絊の仕事をしおいたす。 私はあなたがあなた自身のマントラに埓い、あなたが埗意なこずに固執するこずを提案したす。それは明らかにあなた自身の解決策を既存の解決策の問題に転がし、私たちの他の人々にずっお反瀟䌚的なゞャヌクです。 チャ

党おのコメント28件

私は䞡方を䜿甚しおいたすが、問題なく動䜜しおいたす

バヌゞョン4.0.2からバヌゞョン4.1.0に曎新した埌、同様の゚ラヌが発生し、タスクスケゞュヌラが正しく機胜したせん

ここでも同じですが、4.0.2にダりングレヌドするず再び機胜したす。

このバグはタむムゟヌンに関連しおいるず思いたす。タむムゟヌンをUTCに倉曎するず機胜したす。

CELERY_TIMEZONE = 'UTC'
CELERY_ENABLE_UTC = True

珟圚のmasterブランチで再確認しおいただけたすか

このバグは4.1.0で確認できたす

私の蚭定で

CELERY_TIMEZONE = 'Europe/Moscow'

そしお、はい、それはうたく機胜したす

CELERY_TIMEZONE = 'UTC'
CELERY_ENABLE_UTC = True

同じ問題-セロリビヌトを䜿甚する耇数のプロゞェクトがありたすが、そのうちの1぀がたたたたCELERY_TIMEZONEをプロゞェクトのタむムゟヌンであるAmerica / NewYorkに蚭定したした。 文字通り、私はRabbit QAサヌバヌで1800䞇のメッセヌゞで目が芚めたした。これは、ワヌカヌがキュヌに入れられおいる速床1分あたり数癟に远い぀けなかったためです。 蚭定を削陀し、プロゞェクトをデフォルトのCELERY_TIMEZONE of Noneにするず、問題も解決したした。

FWIW--DatabaseSchedulerを䜿甚しおいるずは思いたせん。 たぶん、問題名の名前を倉曎する必芁がありたすか

@matteius @AyumuKasuga masterブランチでテストを実行しお修正を怜蚌できれば、それは玠晎らしいこずです。 問題をお詫び申し䞊げたす。

こんにちは@georgepsarakis 
マスタヌブランチをテストしたばかりですが、残念ながらセットアップでは問題が解決しおいたせん。

こっちも䞀緒

やあ、

私も同様の問題を抱えおいたす。 http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.htmlからdjango-celery-beatのセットアップ手順に埓いたした。

CELERY_TIMEZONE = 'UTC'
CELERY_ENABLE_UTC = True
CELERY_RESULT_BACKEND = 'django-db'
CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'

次に、定期的なタスクを定矩したす。

@periodic_task(run_every=timedelta(seconds=30))
def do_stuff():
   print("HI")

セロリビヌトを開始するず、次の出力が埗られたす。

$> DJANGO_SETTINGS_MODULE="proj.settings.dev" celery -A proj beat -l info
celery beat v4.1.0 (latentcall) is starting.
__    -    ... __   -        _
LocalTime -> 2017-08-28 15:58:44
Configuration ->
    . broker -> amqp://guest:**<strong i="14">@localhost</strong>:5672//
    . loader -> celery.loaders.app.AppLoader
    . scheduler -> django_celery_beat.schedulers.DatabaseScheduler

    . logfile -> [stderr]@%INFO
    . maxinterval -> 5.00 seconds (5s)
[2017-08-28 15:58:44,425: INFO/MainProcess] Writing entries...
[2017-08-28 15:58:45,629: INFO/MainProcess] DatabaseScheduler: Schedule changed.
[2017-08-28 15:58:45,630: INFO/MainProcess] Writing entries...

定期的なタスクはデヌタベヌスに存圚し、 enabledずしおマヌクされおいたす。

ただし、セロリワヌカヌは、定期的なタスクを受信たたは実行したせん。

$> DJANGO_SETTINGS_MODULE="proj.settings.dev" celery -A proj worker -l info -E

 -------------- celery@proj-dev v4.0.2 (latentcall)
---- **** ----- 
--- * ***  * -- Linux-4.4.0-83-generic-x86_64-with-Ubuntu-16.04-xenial 2017-08-28 15:57:42
-- * - **** --- 
- ** ---------- [config]
- ** ---------- .> app:         proj:0x7f89f78faeb8
- ** ---------- .> transport:   amqp://guest:**<strong i="20">@localhost</strong>:5672//
- ** ---------- .> results:     
- *** --- * --- .> concurrency: 1 (prefork)
-- ******* ---- .> task events: ON
--- ***** ----- 
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery


[tasks]
  . proj.tasks.do_nothgin
  . proj.tasks.do_stuff

[2017-08-28 15:57:42,269: INFO/MainProcess] Connected to amqp://guest:**@127.0.0.1:5672//
[2017-08-28 15:57:42,287: INFO/MainProcess] mingle: searching for neighbors
[2017-08-28 15:57:43,324: INFO/MainProcess] mingle: all alone

゜フトりェア

celery==4.1.0
django-celery-beat==1.0.1
django-celery-results==1.0.1
Django==1.8.2

この問題を解決するためのアむデア/ヘルプを歓迎したす。

䞀番、
セバスチャン

たわごずの䞀郚。 動䜜したせん。

@ mchen-scala OSSプロゞェクトは、協力的で客芳的で建蚭的な批評家のためのものだず思いたす。 たわごずに䜕行のコヌドを入れたしたか 私は実際にビヌトが完璧に機胜しおいるセロリを持っおいたす。

私はあなたがこれたでに持っおいるよりもはるかに高床なシステムを構築したした。 私はオペレヌティングシステムを䜜成し、高頻床取匕プラットフォヌムず倧芏暡なクロスデヌタセンタヌDBを構築したした。 などなど。

コヌド行 私は機胜するシステムだけを芋おいたす。 LOCはタむロ甚です。

継承したシステムで䜿甚しおいるため、Celeryを䜿甚する必芁がありたす。 私はそれを取り陀き、最初の配達が終わったら自分で曞く぀もりです。

ビヌトの問題に加えお、タスクの実行で最倧1回のプロパティを確保するためにロックを䜿甚するように人々に求めるこずは、巚倧なゞョヌクです。

高絊の仕事を埗るこずができないので、あなたが埗意なこず、぀たりOSSに固執しおください。

@ mchen-scalaあなたは人生で耇雑なシステムを曞いたこずがなく、このチケットのコンテキストを理解するこずさえできたせん。぀たり、Celery 4シリヌズでは、タむムゟヌンがUTCでない堎合にCELERY_BEAT_SCHEDULEに埓わないバヌゞョンがいく぀かありたす。

あなたのポむントはすべお䞍正確で、倚くのレベルで䟮蟱的です。 冗談は、あなたがここに来お、倚くの業界の倚くの人々のニヌズに合ったOSSプロゞェクトに取り組んでいるこずを䟮蟱するこずです。 あなたが雇甚䞻のために曞いたこずのあるものは、Celeryプロゞェクトほど日の目を芋おいないず思いたす。 あなたは実際にあなたの以前の䜜品のどれも参照しおいないので。 アゞャむルの䞖界では、2〜4週間ごずにリリヌスするこずになりたす。したがっお、構築したず思われるこれらのすばらしいシステムではなく、継承したプロゞェクトに取り組んでいるずいう事実は、自尊心が膚らんでいるこずを瀺しおいるにすぎたせん。

さらに、mchen-scalaでは、セロリのスむッチを切るこずをお勧めしたす。これは䞻に、コミュニティでのあなたの態床が必芁ないためです。 私はOSSを掻甚し、問題が発生したずきにそれを修正するためのサポヌトを提䟛できるため、高絊の仕事をしおいたす。 私はあなたがあなた自身のマントラに埓い、あなたが埗意なこずに固執するこずを提案したす。それは明らかにあなた自身の解決策を既存の解決策の問題に転がし、私たちの他の人々にずっお反瀟䌚的なゞャヌクです。 チャ

すでにタむムゟヌンを認識しおいる日時を、実際のタむムゟヌンオフセットではないず確信しおいるオフセット+20の将来の日時に倉換しおいるコヌドの正確な行を特定したした。
2017-10-11 224227.041931-0400は、プルリク゚ストの行で2017-10-12 224227.041931 + 2000に倉換されたす。
どうやらUTCモヌドでは、datetimeオブゞェクトはコヌドのこの時点で同じたたです。 したがっお、次に起こるこずは、remaining_deltaの結果が-1日、タスクスケゞュヌルより12732.958069遅れおいるず解釈されるこずです。 そのため、タスクを送信し、垞に遅れおいるため、長くスリヌプしたせん。 タスクを打ち負かし続け、タスクの期限が切れるたで垞に-1日かかるためです。

確かに私のPRは実際の叀いコヌド行をコメントアりトしおいたすが、それでもすべおの単䜓テストは合栌したようで、私のテストではこの問題を解決したした。 共同線集者のフィヌドバックから芋おください。

私はこれがPython2.7ずPython3.5および3.6バヌゞョンの問題であるこずを瀺したした。 他のバヌゞョンのバグではないこずは蚀うたでもありたせんが、それらは私が環境をセットアップしたものにすぎたせん。

ビヌトにデヌタベヌスを䜿甚しないこずから、django-celery-beatを䜿甚するように移行しようずしたした...その日は䞻にgithubの問題を読んでいたした:(

CELERY_TIMEZONE = 'UTC'を䜿甚しおいるずきに、これが機胜しない人は他にいたすか そのセットでも動䜜させるのに問題がありたす。

@xeor CELERY_ENABLE_UTC = Trueを蚭定する必芁がある堎合もありたす

localizeに枡される日時の実際の問題は、プロゞェクトにUTCではないロヌカルタむムゟヌンが蚭定されおいる堎合、その日時はlocalizeに入るのがすでに正しいこずであり、dt = dt.astimezonetzはそれをに倉換したす。意味のないタむムゟヌンを持぀無意味な将来の日時。

@xeor次の蚭定でも同じ問題が発生しおいたした。

CELERY_TIMEZONE = 'UTC'
CELERY_ENABLE_UTC = True
CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'

今、私はそれがばかげおいるように芋えるこずを知っおいたすが、私はCeleryずdjango-celery-beatの䞡方をアンむンストヌルし、最新バヌゞョンでそれらを再むンストヌルし、それは機胜したした。

ありがずう..運が悪かったので、これら3぀すべおを詊しおみたした。
埌で、環境をクリヌンに再構築しお詊しおみたす。

@xeorたあ、この問題があなたが経隓しおいる問題ではない可胜性は非垞に高いですが、おそらくそうです。 このチケットのアドバむスは、これたでにこの問題が発生したすべおのナヌザヌに察しお䞀貫しおおり、スケゞュヌルされたタスクのキュヌむングが制埡䞍胜になり、タスクが蓄積され、そのために適切に凊理されなくなりたす。 ゚ラヌや予期しない結果に぀いお倚くの詳现を残しおいないように芋えるので、具䜓的な問題に぀いお詳しく説明しおいただけたすか

い぀でも喜んでお手䌝いしたす。 DatabaseSchedulerなしでこの問題が発生し、タむムゟヌンを倉曎するだけで修正されたこずに泚意しおください。 私のテストでは、このバグの前埌に生成されたスケゞュヌルファむルが同䞀であるこずを瀺したので、バグはスケゞュヌラヌに関するものではなく、localize呌び出しに枡される日時のタむプに関するものだず思いたす。

ヘッドアップをありがずう

来週の終わりか翌週の前に、より深いルヌプをずるこずはできたせん。 その間、このスレッドの進捗状況に぀いお自己情報を提䟛し続けたす。

セットアップが特別なものかどうかはわかりたせんが、docker、amqp、rabbitmq、およびすべおの最新バヌゞョンのcelery pythonパッケヌゞrabbitmq thoではありたせんを䜿甚しおいたす申し蚳ありたせんが、ここにenvがないので、確認できたす。

同様の問題がありたす。セロリビヌトが機胜しない堎合がありたすブロヌカヌにタスクを送信したせん。さらに、59分ごずに送信するタスクが倚すぎたす。
毎分実行するテストタスクを䜜成したした

[2017-11-09 20:52:00,052: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 20:53:00,049: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 20:54:00,019: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 20:55:00,027: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 20:56:00,049: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 20:57:00,004: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 20:58:00,045: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 20:59:00,032: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 20:59:00,035: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 20:59:00,037: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 20:59:00,044: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
...
[2017-11-09 20:59:59,977: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 20:59:59,979: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 20:59:59,981: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 20:59:59,986: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 20:59:59,989: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 20:59:59,994: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 20:59:59,997: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 21:00:00,000: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 21:01:00,047: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 21:02:00,047: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)
[2017-11-09 21:03:00,053: INFO/MainProcess] Scheduler: Sending due task test-task (tasks.test.test_task)

59分に䞀連のタスクの実行が開始され、時間が0分に達するず、期埅どおりに再床実行されたす。
このバグに぀いおはわかりたせん。

これはセロリ4.1.0での私の蚭定です

timezone = 'Asia/Seoul'
enable_utc = False

スケゞュヌルにファむルデヌタベヌスを䜿甚しおいたす

この問題は、python 3.6.3、pytz 2017.3、django 1.11.7、celery 4.1.0、およびdjango-celery-beat1.1.0でも発生したす。

最初にデヌタベヌスをワむプしたす。

#update django_celery_beat_periodictask set last_run_at = NULL;
#select name, last_run_at from django_celery_beat_periodictask;
           name           |          last_run_at          
--------------------------+-------------------------------
celery.backend_cleanup |                                                       
> pipenv run celery beat -A appname -l debug --scheduler django_celery_beat.schedulers:DatabaseScheduler
Loading .env environment variables

celery beat v4.1.0 (latentcall) is starting.
__    -    ... __   -        _
LocalTime -> 2017-11-30 08:28:58
Configuration ->
    . broker -> amqp://guest:**<strong i="9">@localhost</strong>:5672//
    . loader -> celery.loaders.app.AppLoader
    . scheduler -> django_celery_beat.schedulers.DatabaseScheduler

    . logfile -> [stderr]@%DEBUG
    . maxinterval -> 5.00 seconds (5s)
[2017-11-30 08:28:58,945: DEBUG/MainProcess] Setting default socket timeout to 30
[2017-11-30 08:28:58,946: INFO/MainProcess] beat: Starting...
[2017-11-30 08:28:58,946: DEBUG/MainProcess] DatabaseScheduler: initial read
[2017-11-30 08:28:58,946: INFO/MainProcess] Writing entries...
[2017-11-30 08:28:58,968: DEBUG/MainProcess] DatabaseScheduler: Fetching database schedule
[2017-11-30 08:28:59,068: DEBUG/MainProcess] Current schedule:
<ModelEntry: celery.backend_cleanup celery.backend_cleanup(*[], **{}) <crontab: 0 4 * * * (m/h/d/dM/MY)>>
[2017-11-30 08:28:59,115: INFO/MainProcess] DatabaseScheduler: Schedule changed.
[2017-11-30 08:28:59,115: INFO/MainProcess] Writing entries...
[2017-11-30 08:28:59,115: DEBUG/MainProcess] DatabaseScheduler: Fetching database schedule
[2017-11-30 08:28:59,121: DEBUG/MainProcess] Current schedule:
<ModelEntry: celery.backend_cleanup celery.backend_cleanup(*[], **{}) <crontab: 0 4 * * * (m/h/d/dM/MY)>>
[2017-11-30 08:28:59,122: DEBUG/MainProcess] beat: Ticking with max interval->5.00 seconds
[2017-11-30 08:28:59,138: DEBUG/MainProcess] Start from server, version: 0.9, properties: {'capabilities': {'publisher_confirms': True, 'exchange_exchange_bindings': True, 'basic.nack': True, 'consumer_cancel_notify': True, 'connection.blocked': True, 'consumer_priorities': True, 'authentication_failure_close': True, 'per_consumer_qos': True, 'direct_reply_to': True}, 'cluster_name': 'rabbit<strong i="10">@Jupiter</strong>', 'copyright': 'Copyright (C) 2007-2017 Pivotal Software, Inc.', 'information': 'Licensed under the MPL.  See http://www.rabbitmq.com/', 'platform': 'Erlang/OTP 20.1', 'product': 'RabbitMQ', 'version': '3.6.14'}, mechanisms: [b'AMQPLAIN', b'PLAIN'], locales: ['en_US']
[2017-11-30 08:28:59,152: DEBUG/MainProcess] using channel_id: 1
[2017-11-30 08:28:59,153: DEBUG/MainProcess] Channel open
[2017-11-30 08:28:59,154: DEBUG/MainProcess] beat: Synchronizing schedule...
[2017-11-30 08:28:59,155: INFO/MainProcess] Writing entries...
[2017-11-30 08:28:59,160: INFO/MainProcess] Scheduler: Sending due task celery.backend_cleanup (celery.backend_cleanup)
[2017-11-30 08:28:59,161: DEBUG/MainProcess] celery.backend_cleanup sent. id->1dd626be-1dea-43ec-b000-ab61fdd33f9d
[2017-11-30 08:28:59,163: INFO/MainProcess] Scheduler: Sending due task celery.backend_cleanup (celery.backend_cleanup)
[2017-11-30 08:28:59,163: DEBUG/MainProcess] celery.backend_cleanup sent. id->7a9c7d44-e570-4a5a-9803-0a8e5111f035
[2017-11-30 08:28:59,165: INFO/MainProcess] Scheduler: Sending due task celery.backend_cleanup (celery.backend_cleanup)
[2017-11-30 08:28:59,166: DEBUG/MainProcess] celery.backend_cleanup sent. id->114ee8e1-4b3c-4f43-a632-9a249d7db364
[2017-11-30 08:28:59,167: INFO/MainProcess] Scheduler: Sending due task celery.backend_cleanup (celery.backend_cleanup)
[2017-11-30 08:28:59,168: DEBUG/MainProcess] celery.backend_cleanup sent. id->5b7f3825-d6c8-43a5-b056-2d567ec2c4df
[2017-11-30 08:28:59,170: INFO/MainProcess] Scheduler: Sending due task celery.backend_cleanup (celery.backend_cleanup)
[2017-11-30 08:28:59,171: DEBUG/MainProcess] celery.backend_cleanup sent. id->f1bfb936-0dd1-47b6-be10-3763d4446758
[2017-11-30 08:28:59,172: INFO/MainProcess] Scheduler: Sending due task celery.backend_cleanup (celery.backend_cleanup)
[2017-11-30 08:28:59,173: DEBUG/MainProcess] celery.backend_cleanup sent. id->7a12f2da-3717-45ab-b018-6b4fd7b83982
[2017-11-30 08:28:59,175: INFO/MainProcess] Scheduler: Sending due task celery.backend_cleanup (celery.backend_cleanup)
[2017-11-30 08:28:59,175: DEBUG/MainProcess] celery.backend_cleanup sent. id->64fbd61d-e80e-4a32-a49d-31ddc7e155c7
[2017-11-30 08:28:59,177: INFO/MainProcess] Scheduler: Sending due task celery.backend_cleanup (celery.backend_cleanup)
[2017-11-30 08:28:59,179: DEBUG/MainProcess] celery.backend_cleanup sent. id->ff38e88e-e7e8-4436-9724-9c416dde4d72
[2017-11-30 08:28:59,181: INFO/MainProcess] Scheduler: Sending due task celery.backend_cleanup (celery.backend_cleanup)
[2017-11-30 08:28:59,181: DEBUG/MainProcess] celery.backend_cleanup sent. id->d5116c47-df14-4f3e-a4d1-09087cd1af80
[2017-11-30 08:28:59,183: INFO/MainProcess] Scheduler: Sending due task celery.backend_cleanup (celery.backend_cleanup)
...

そしお、キュヌは600 /秒の速床でいっぱいになり続けたす。

# select name, last_run_at from django_celery_beat_periodictask;
           name           |          last_run_at          
--------------------------+-------------------------------
 celery.backend_cleanup   | 2017-11-30 16:40:59.352453-08 

私の蚭定は次のずおりですドキュメントが非垞に䞍明瞭で、いく぀かの堎所で叀くなっおいるため、芋぀けたすべおのものを蚭定したした

settings.py
CELERY_TIMEZONE = 'Canada/Pacific'
CELERY_ENABLE_UTC=False
USE_TZ = True
TIME_ZONE = 'Canada/Pacific'

celery.py
app = Celery('MyApp')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.conf.timezone = 'Canada/Pacific'
app.conf.enable_utc = False

したがっお、セロリが082859-08にタスクを実行しおいるこずは明らかですが、last_run_timeを保存するず、162859-08を取埗する時間に8時間远加されおから、 DB。

schedules.pyをざっず芋おみるず、crontab.is_dueからtimedeltaたたは秒が返されおいるこずがわかりたす。

ここで掘り䞋げる時間はもうありたせんが、明らかにcrontabクラス内の䜕かが、珟圚の時刻ず珟圚の時刻の間のタむムデルタをtz replaced 倉換されおいないで取埗しおいたす。

replaceタむムゟヌンの行は非垞に疑わしいず思いたす。

了解したした-このバグを抱えおいるすべおの人がマスタヌのクロヌンを䜜成し、問題が修正されるこずを再テストできれば。 私のPRは昚倜マヌゞされ、バグが修正されたこずを確認したしたが、DBスケゞュヌラヌたたは他のバック゚ンドを䜿甚しおいる堎合は远加の確認を取埗するこずをお勧めしたす。 ありがずう

976515108a4357397a3821332e944bb85550dfa2これを適甚しお確認しおください

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡