获取Facebook图片时芹菜任务错误

时间:2014-06-24 18:27:41

标签: django celery python-requests

我有以下芹菜任务:

@task
def get_users_facebook_as_profile_icon(user_id, facebook_id):
    logger.info('Grabbing users facebook picture')
    url = "http://graph.facebook.com/%s/picture?type=large" % facebook_id

    import requests
    response = requests.get(url)
    if response.status_code != 200:
        raise Exception("Could not get facebook profile picture")
...

此后我有更多,但我一直收到以下错误:

"AssertionError('PID check failed. RNG must be re-initialized after fork(). Hint: Try Random.atfork()',)" 


Task was called with args: (3246, 17500596) kwargs: {}. 

The contents of the full traceback was: 

Traceback (most recent call last): 
File "/usr/local/lib/python2.7/dist-packages/celery/app/trace.py", line 240, in trace_task 
R = retval = fun(*args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/celery/app/trace.py", line 437, in __protected_call__ 
return self.run(*args, **kwargs) 
File "/home/ubuntu/mounzawebsite/mounza/celery_tasks/login_registration.py", line 42, in get_users_facebook_as_profile_icon 
hashname = user.generate_picture_name() 
File "/home/ubuntu/mounzawebsite/mounza/web/models.py", line 515, in generate_picture_name 
return generate_random_name(None) 
File "/home/ubuntu/mounzawebsite/mounza/web/models.py", line 40, in generate_random_name 
str(random.randint(1, 99982098098908237)) + 
File "/usr/lib/python2.7/dist-packages/Crypto/Random/__init__.py", line 41, in get_random_bytes 
return _UserFriendlyRNG.get_random_bytes(n) 
File "/usr/lib/python2.7/dist-packages/Crypto/Random/_UserFriendlyRNG.py", line 213, in get_random_bytes 
return _get_singleton().read(n) 
File "/usr/lib/python2.7/dist-packages/Crypto/Random/_UserFriendlyRNG.py", line 163, in read 
return _UserFriendlyRNG.read(self, bytes) 
File "/usr/lib/python2.7/dist-packages/Crypto/Random/_UserFriendlyRNG.py", line 122, in read 
self._check_pid() 
File "/usr/lib/python2.7/dist-packages/Crypto/Random/_UserFriendlyRNG.py", line 138, in _check_pid 
raise AssertionError("PID check failed. RNG must be re-initialized after fork(). Hint: Try Random.atfork()") 
AssertionError: PID check failed. RNG must be re-initialized after fork(). Hint: Try Random.atfork() 

我尝试在网上挖掘,但无法找到根本原因。但这是发生此错误的唯一任务。唯一的区别是我从Facebook下载图像,但我从未在其他地方看到过这个问题,包括我下载图像的其他任务。

如果我通过网络浏览器执行此操作,则网址效果很好,但只有通过此任务才会失败。还有什么可以促成这个吗?

我已尽力解决所有问题:(

1 个答案:

答案 0 :(得分:0)

原因如下:

http://comments.gmane.org/gmane.comp.python.amqp.celery.user/3664

始终运行以下内容:

Crypto.Random.atfork()

初始化新的工作进程时。做完了。