0

我有一个通过 IIS(7.5,Windows Server 2008 R2)托管的站点。该站点本身基于 Django (Python),并使用 Celery 进行异步任务处理。Celery 需要在任务处理之前启动几件事(celeryd、celerycam、celerybeat),我创建了一个启动这些的服务。它设置为在服务控制面板中自动启动。

我发现,在服务器重新启动(自动更新等)后,我的 Celery 服务要么没有启动,要么时间有问题,并且依赖于它的我的网站无法使用它们。由于没有这些工作,该站点基本上是无用的,因此我需要找到一种方法来确保它们在站点可用之前运行。

我想避免让所有 IIS 都依赖于这个服务;只是一个有问题的站点(我有几个其他站点通过那里托管在不需要服务的不同端口上)。

4

1 回答 1

0

我认为最好的解决方案是更改您的应用程序并在无法连接到 Celery 服务时使其软失败。即向用户显示一条信息性错误消息,并为其提供重试选项。

让它依赖于服务的启动顺序是不好的设计。如果 Celery 服务因任何原因失败怎么办?顺便说一下,数据库连接/查询也是如此。您的代码应始终优雅地处理故障/错误。

于 2012-04-20T11:27:38.010 回答