我第一次尝试配置Django-q,使用Amazon作为代理。
我使用Python2.7.11、Django 1.11.5、django-Q0.9.2、boto3 1.5.28和django-存储1.4.1。
我已经在我的Django应用程序中使用了AWS S3和cloudfront几年了,所以它们的配置是正确的。我使用S3和cloudfront来服务媒体文件,而django-whitenoise用于服务django静态文件。
我只为SQS创建了新的IAM用户,并授予它AmazonSQSFullAccess。在我的项目(settings.py)中使用的应用程序列表:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'whitenoise.runserver_nostatic',
'django.contrib.staticfiles',
'django.contrib.sites',
'django.contrib.humanize',
'django.contrib.sitemaps',
'utils',
'storages',
'my_app',
'debug_toolbar',
'widget_tweaks',
'django_q',
)在Django-q文档之后,我已经完成了执行以下命令的步骤:
python manage.py qcluster这给我带来了这些错误:
pickle.PicklingError: Can't pickle <class 'boto3.resources.factory.sqs.ServiceResource'> it's not found as boto3.resources.factory.sqs.ServiceResource以及Django错误:
raise AppRegistryNotReady(aren't loaded yet.") django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.这让我很困惑,我真的不知道会有什么问题。
更新
这是cmd完全错误跟踪:
Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "just_a_path_to_my_app\lib\site-packages\django\core\management\__init__.py", line 364, in execute_from_command_line
utility.execute()
File "just_a_path_to_my_app\lib\site-packages\django\core\management\__init__.py", line 356, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "just_a_path_to_my_app\lib\site-packages\django\core\management\base.py", line 283, in run_from_argv
self.execute(*args, **cmd_options)
File "just_a_path_to_my_app\lib\site-packages\django\core\management\base.py", line 330, in execute
output = self.handle(*args, **options)
File "just_a_path_to_my_app\lib\site-packages\django_q\management\commands\qcluster.py", line 22, in handle
q.start()
File "just_a_path_to_my_app\lib\site-packages\django_q\cluster.py", line 54, in start
self.sentinel.start()
File "c:\python27\Lib\multiprocessing\process.py", line 130, in start
self._popen = Popen(self)
File "c:\python27\Lib\multiprocessing\forking.py", line 277, in __init__
dump(process_obj, to_child, HIGHEST_PROTOCOL)
File "c:\python27\Lib\multiprocessing\forking.py", line 199, in dump
ForkingPickler(file, protocol).dump(obj)
File "c:\python27\Lib\pickle.py", line 224, in dump
self.save(obj)
File "c:\python27\Lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "c:\python27\Lib\pickle.py", line 425, in save_reduce
save(state)
File "c:\python27\Lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "c:\python27\Lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "c:\python27\Lib\pickle.py", line 687, in _batch_setitems
save(v)
File "c:\python27\Lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "c:\python27\Lib\pickle.py", line 568, in save_tuple
save(element)
File "c:\python27\Lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "c:\python27\Lib\pickle.py", line 425, in save_reduce
save(state)
File "c:\python27\Lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "c:\python27\Lib\pickle.py", line 655, in save_dict
self._batch_setitems(obj.iteritems())
File "c:\python27\Lib\pickle.py", line 687, in _batch_setitems
save(v)
File "c:\python27\Lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "c:\python27\Lib\pickle.py", line 396, in save_reduce
save(cls)
File "c:\python27\Lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "c:\python27\Lib\pickle.py", line 754, in save_global
(obj, module, name))
pickle.PicklingError: Can't pickle <class 'boto3.resources.factory.sqs.ServiceRe
source'>: it's not found as boto3.resources.factory.sqs.ServiceResource
(my_app) just_a_path_to_my_app\fakultet>Traceback (most recent call last):
File "<string>", line 1, in <module>
File "c:\python27\Lib\multiprocessing\forking.py", line 381, in main
self = load(from_parent)
File "c:\python27\Lib\pickle.py", line 1384, in load
return Unpickler(file).load()
File "c:\python27\Lib\pickle.py", line 864, in load
dispatch[key](self)
File "c:\python27\Lib\pickle.py", line 1096, in load_global
klass = self.find_class(module, name)
File "c:\python27\Lib\pickle.py", line 1130, in find_class
__import__(module)
File "just_a_path_to_my_app\lib\site-packages\django_q\cluster.py", line 25, in <module>
import tasks
File "just_a_path_to_my_app\lib\site-packages\django_q\tasks.py", line 11, in <module>
import cluster
File "just_a_path_to_my_app\lib\site-packages\django_q\cluster.py", line 29, in <module>
from django_q.models import Task, Success, Schedule
File "just_a_path_to_my_app\lib\site-packages\django_q\models.py", line 16, in <module>
class Task(models.Model):
File "just_a_path_to_my_app\lib\site-packages\django\db\models\base.py", line 110, in __new__
app_config = apps.get_containing_app_config(module)
File "just_a_path_to_my_app\lib\site-packages\django\apps\registry.py", line 247, in get_containing_app_config
self.check_apps_ready()
File "just_a_path_to_my_app\lib\site-packages\django\apps\registry.py", line 125, in check_apps_ready
raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.发布于 2018-02-17 13:53:57
我不知道django-q有Windows兼容性问题,所以这就是为什么我无法使它在我的Windows开发机器下工作。在我的生产CentOS服务器上安装了django-q并遵循简单的配置说明之后,一切都进行得很顺利。
https://stackoverflow.com/questions/48795017
复制相似问题