django 在铁路上运行Celery任务

yvfmudvl  于 2023-05-19  发布在  Go
关注(0)|答案(1)|浏览(134)

我在Railway中部署了一个Django项目,它使用Celery和Redis来执行预定任务。项目已成功联机,但未执行Celery任务。
如果我使用Railway CLI从我的计算机终端执行Celery worker,任务将按预期执行,结果将保存在Railway的PostgreSQL中,因此这些结果将显示在在线站点中。此外,使用的redis服务器也是铁路的服务器。
然而,Celery在“本地”运营。这是我本地终端上的日志,显示Celery正在本地运行,Redis服务器是Railway中的一个:

-------------- celery@MacBook-Pro-de-Corey.local v5.2.7 (dawn-chorus)
--- ***** ----- 
-- ******* ---- macOS-13.1-arm64-arm-64bit 2023-01-11 23:08:34
- *** --- * --- 
- ** ---------- [config]
- ** ---------- .> app:  suii:0x1027e86a0
- ** ---------- .> transport:  redis://default:**@containers-us-west-28.railway.app:7078//
- ** ---------- .> results: 
- *** --- * --- .> concurrency: 10 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** ----- 
-------------- [queues]
.> celery  exchange=celery(direct) key=celery
[tasks]
. kansoku.tasks.suii_kakunin

我在Proc文件中包含了这行代码,这是关于工人的(正如我在另一个相关的答案中看到的):

worker: python manage.py qcluster --settings=my_app_name.settings

并且还具有指向Railway的REDIS_URL的环境变量CELERY_BROKER_REDIS_URL。我也尝试过在应用程序的管理员中创建一个“周期性任务”,但它就是不能执行。我应该做什么才能在没有电脑的情况下自动完成计划的任务?

dtcbnfnu

dtcbnfnu1#

我的理解是,为了在Railway上运行celery worker,您需要在项目中创建另一个服务,并启动您通常放置在Procfile中的命令来启动worker(在服务设置中,转到Deploy >> Start命令)。这种设置意味着您不需要Procfile(因此,您需要重新排列其他命令(例如:“web”)到其他服务设置中)。

相关问题