django ipython shell_Celery教程在标准的iPython shell中可以正常工作,但在使用Django的嵌入式ipythonsh时则不行...

我已经设置了一个django芹菜的测试实例,并查看了一些基本的芹菜示例,发现了一些看起来很奇怪的东西。在

一切工作正常,正如标准芹菜教程的前几个部分中的基本示例一样。在

Python管理.py贝壳

一旦我开始在Django shell中尝试一些画布原语,就会得到一个NameError,如下所示:$ python manage.py shell

In [1]: from celerytest.tasks import add

In [2]: from celery import group

In [3]: group(add.s(i, i) for i in xrange(10))().get()

---------------------------------------------------------------------------

NameError Traceback (most recent call last)

/Users/jacinda/envs/testproj/lib/python2.7/site-packages/django/core/management/commands/shell.pyc in ()

----> 1 group(add.s(i, i) for i in xrange(10))().get()

/Users/jacinda/envs/testproj/lib/python2.7/site-packages/celery/canvas.pyc in __call__(self, *partial_args, **options)

397

398 def __call__(self, *partial_args, **options):

--> 399 tasks = [task.clone() for task in self.tasks]

400 if not tasks:

401 return

/Users/jacinda/envs/testproj/lib/python2.7/site-packages/celery/utils/functional.pyc in __iter__(self)

286

287 def __iter__(self): # needed for Python 2.5

--> 288 return iter(self.data)

/Users/jacinda/envs/testproj/lib/python2.7/site-packages/kombu/utils/__init__.pyc in __get__(self, obj, type)

292 return obj.__dict__[self.__name__]

293 except KeyError:

--> 294 value = obj.__dict__[self.__name__] = self.__get(obj)

295 return value

296

/Users/jacinda/envs/testproj/lib/python2.7/site-packages/celery/utils/functional.pyc in data(self)

283 @cached_property

284 def data(self):

--> 285 return list(self.__it)

286

287 def __iter__(self): # needed for Python 2.5

/Users/jacinda/envs/testproj/lib/python2.7/site-packages/django/core/management/commands/shell.pyc in ((i,))

----> 1 group(add.s(i, i) for i in xrange(10))().get()

NameError: global name 'add' is not defined

但下面这一行行行得通:

^{pr2}$

正如显式列出子任务一样:In [5]: group([add.s(1,2), add.s(3,4)])().get()

Out[5]: [3, 7]

伊普顿

如果我使用常规pythonshell并手动导入设置而不是使用管理.py壳牌,一切正常。一、 e$ ipython

In [1]: from testproj import settings

In [2]: from celerytest.tasks import add

In [3]: from celery import group

In [4]: group(add.s(i, i) for i in xrange(10))().get()

Out[4]: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

我看过epdb的失败案例,不知道到底发生了什么。在

我在google上搜索了一下,我发现的唯一100%相似的参考是celery的github页面上的这个问题:https://github.com/celery/celery/issues/1222。这张海报提到了我遇到的同样的问题,但只是说他的“Python/djangoshell做了一些奇怪的事情”,并没有进一步阐述。你知道是什么原因造成的吗?或者我应该找别的地方吗?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值