小编Fab*_*bio的帖子

Django - 如何实时跟踪用户是否在线/离线?

我正在考虑使用django-notifications和Web Sockets向iOS/Android和Web应用程序发送实时通知.所以我可能会使用Django频道.

我可以使用Django频道实时跟踪用户的在线状态吗?如果是,那么如何在不经常轮询服务器的情况下实现这一目标?

我正在寻找最佳实践,因为我找不到任何合适的解决方案.

更新:

我到目前为止尝试的是以下方法:使用Django Channels,我实现了一个WebSocket使用者,在连接时将用户状态设置为'online',而当套接字断开时,用户状态将被设置为'offline'.最初我想要包括'away'状态,但我的方法无法提供这种信息.此外,当用户使用来自多个设备的应用程序时,我的实现将无法正常工作,因为连接可以在设备上关闭,但仍然在另一个设备上打开; 'offline'即使用户有另一个打开的连接,状态也将设置为.

class MyConsumer(AsyncConsumer):

    async def websocket_connect(self, event):
        # Called when a new websocket connection is established
        print("connected", event)
        user = self.scope['user']
        self.update_user_status(user, 'online')

    async def websocket_receive(self, event):
        # Called when a message is received from the websocket
        # Method NOT used
        print("received", event)

    async def websocket_disconnect(self, event):
        # Called when a websocket is disconnected
        print("disconnected", event)
        user = self.scope['user'] …
Run Code Online (Sandbox Code Playgroud)

django django-notification django-channels

15
推荐指数
2
解决办法
2536
查看次数

如何在MySQL中使用TIME类型?

我正在通过MySQL Workbench构建我的第一个数据库.在表中,我需要存储time包含分钟和秒的属性.在这方面,我想使用TIME数据类型.该类型所需的参数是什么TIME(...)

mysql database time

8
推荐指数
2
解决办法
2万
查看次数

Django REST Framework-使用@action装饰器定义额外的参数

我想知道是否有可能使用action装饰器定义额外的参数:

class UserViewSet(viewsets.ModelViewSet):
    """
    A viewset that provides the standard actions
    """
    queryset = User.objects.all()
    serializer_class = UserSerializer

    @action(methods=['post'], detail=True)
    def follow(self, request, pk=None):
        user = self.get_object()
        target_user = ???
        Follow.objects.create(user=user, target=target_user)
        return Response(status=status.HTTP_204_NO_CONTENT)
Run Code Online (Sandbox Code Playgroud)

我要实现的是匹配以下路径: api/users/{id}/follow/{target_id}

follow操作将用于让ID为的用户id跟随另一个ID为的用户target_id

更新

由于似乎无法传递额外的参数,因此现在我将数据作为要遵循的用户ID列表发布:

用于验证数据的串行器:

class FollowSerializer(serializers.ModelSerializer):
    user_ids = serializers.ListField(child=serializers.IntegerField(min_value=1), required=False, help_text='User target IDs')
Run Code Online (Sandbox Code Playgroud)

那个行动:

    @action(detail=True, methods=['post'])
    def follow(self, request, pk=None):
        user = self.get_object()
        serializer = FollowSerializer(data=request.data)
        if serializer.is_valid():
            serializer.data['user_ids']
            for user_id in user_ids:
                target_user = …
Run Code Online (Sandbox Code Playgroud)

django-rest-framework

8
推荐指数
3
解决办法
6792
查看次数

如何删除IBM Bluemix中的"空格"?

我在我的Bluemix帐户上创建了一个额外的"空间".我仔细检查了我的Bluemix仪表板,但我无法删除该空间.现在,我怎么能删除它?

ibm-cloud

6
推荐指数
1
解决办法
2420
查看次数

AWS MediaLive MediaPackage - 如何将实时流视频存储到 S3?

我正在使用 AWS MediaLive 从移动设备实时推送视频内容。然后我使用 AWS MediaPackage 来消化输入,即来自 AWS MediaLive 的输出。使用 AWS MediaLive,我创建了源终端节点,让用户/观众观看直播。

现在,我不知道如何将实时流媒体视频存储到 S3 并通过 CDN 分发它,以便即使流媒体结束也能观看视频。AWS 提供的东西是开箱即用的吗?

更新

我定义了一个ArchiveGroupSettings带有输出 URL 的 S3 存储桶。现在 MediaLive 创建.ts文件并将它们发送到存储桶,问题是.ts文件不包含.m3u8播放列表文件。

我应该使用其他 AWS 媒体服务吗?我需要的只是一种在实时流完成后流式传输视频的方法,即将 HLS 视频保存到 S3 或类似的,然后通过像 CloudFront 这样的 CDN 分发它。

注意:我使用的是 AWS MediaLive 和 MediaPackage API。

amazon-s3 video-streaming amazon-web-services

4
推荐指数
1
解决办法
2400
查看次数

为什么带有通配符的 LIKE 查询不使用索引?

尽管标题列是通过使用以下查询添加为索引的:

ALTER TABLE Recipe ADD INDEX Title_idx (Title)
Run Code Online (Sandbox Code Playgroud)

MySQL 不使用该索引来执行此查询:

SELECT * FROM Recipe
WHERE Title LIKE '%cake%';
Run Code Online (Sandbox Code Playgroud)

我使用了EXPLAIN关键字,关键字段是NULL

怎么解决呢?我必须改进该查询。

mysql explain

3
推荐指数
2
解决办法
4377
查看次数

Celery + Redis - Django 在延迟触发任务时阻塞

我已经使用 Redis 在我的 Django 项目上设置了 Celery。计划任务运行没有问题。使用delay(). 执行停止,就像被阻塞在kombu.utils.retry_over_time.

我检查了一下,Redis 已启动并正在运行。我真的不知道如何调试这个问题。

这是一些软件包版本

Django==2.1.2
celery==4.2.1
django-celery-beat==1.4.0
django-celery-results==1.0.4
redis==3.2.0
kombu==4.4.0
Run Code Online (Sandbox Code Playgroud)

设置

CELERY_REDIS_HOST = 'localhost'
CELERY_REDIS_PORT = 6379
CELERY_REDIS_DB = 1 # # Redis DB number, if not provided the default will be 0
CELERY_REDIS_PASSWORD = ''

CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'

CELERY_BROKER_URL = 'redis://{host}:{port}/{db}'.format(host=CELERY_REDIS_HOST, port=CELERY_REDIS_PORT, db=CELERY_REDIS_DB)
CELERY_RESULT_BACKEND = 'django-db'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json' # Result serialization format
CELERY_TASK_SERIALIZER = 'json' # String identifying the serializer to be used

CELERY_BROKER_TRANSPORT_OPTIONS = …
Run Code Online (Sandbox Code Playgroud)

django redis celery

3
推荐指数
1
解决办法
1088
查看次数

AWS Elastic Beanstalk上的Celery配置存在问题-“没有对进程的配置更新”

我已经在AWS Elastic Beanstalk上部署了Django 2应用程序,并且我正在尝试配置Celery,以便在同一台计算机上执行异步任务。

我的文件:

02_packages.config

files:
  "/usr/local/share/pycurl-7.43.0.tar.gz" :
    mode: "000644"
    owner: root
    group: root
    source: https://pypi.python.org/packages/source/p/pycurl/pycurl-7.43.0.tar.gz

packages:
  yum:
    python34-devel: []
    libcurl-devel: []

commands:
  01_download_pip3:
    # run this before PIP installs requirements as it needs to be compiled with OpenSSL
    command: 'curl -O https://bootstrap.pypa.io/get-pip.py'
  02_install_pip3:
    # run this before PIP installs requirements as it needs to be compiled with OpenSSL
    command: 'python3 get-pip.py'

container_commands:
  03_pycurl_reinstall:
    # run this before PIP installs requirements as it needs to be compiled with OpenSSL …
Run Code Online (Sandbox Code Playgroud)

django celery supervisord amazon-elastic-beanstalk

1
推荐指数
1
解决办法
1134
查看次数

Django项目结构的最佳实践是什么?

我想知道Django项目的结构是否有最佳实践.特别是,您在哪里找到项目的virtualenv文件夹?

您认为以下解决方案更好吗?

/myproject
    /myenv
    manage.py
    /mysite
        settings.py
        urls.py
        wsgi.py
        __init__.py
Run Code Online (Sandbox Code Playgroud)

或者你认为拥有一个包含所有环境的文件夹会更好,例如在主目录中:

/virtualenvs
    /myproject1_env
    /myproject2_env
    ...
    /myprojectN_env
Run Code Online (Sandbox Code Playgroud)

django

-1
推荐指数
1
解决办法
1785
查看次数