【发布时间】:2015-12-02 16:25:27
【问题描述】:
我有一个需要运行优化算法的 Django 应用程序。该算法由两部分组成。第一部分是进化算法,该算法调用了第二部分的一定数量的任务,即模拟退火算法。 问题是 celery 不允许任务调用异步任务。 我在下面尝试过这段代码:
sa_list = []
for cromossomo in self._populacao:
sa_list.append(simulated_annealing_t.s(cromossomo.to_JSON(), self._NR, self._T, get_mutacao_str(self._mutacao_SA), self._argumentos))
job = group(sa_list)
result = job.apply_async()
resultados = result.get()
这段代码是进化算法的一部分,它是一个芹菜任务。 当我尝试运行它时,芹菜显示此消息:
[2015-12-02 16:20:15,970:警告/Worker-1] /home/arthur/django-user/local/lib/python2.7/site-packages/celery/result.py:45: RuntimeWarning:永远不要在任务中调用 result.get()! 见http://docs.celeryq.org/en/latest/userguide/tasks.html#task-synchronous-subtasks
在 Celery 3.2 中,这将导致异常 提出而不仅仅是一个警告。
尽管只是一个警告,芹菜似乎充满了任务和锁。
我搜索了很多解决方案,但都没有奏效。
【问题讨论】:
标签: python asynchronous optimization celery django-celery