小编mag*_*noz的帖子

Celery CRITICAL/MainProcess]不可恢复的错误:AttributeError("'float'对象没有属性'items'",)

我一直在运行一个带有芹菜工人的烧瓶应用程序,并且在三个独立的码头集装箱中没有任何问题.

这就是我开始它的方式:

celery worker -A app.controller.engine.celery -l info --concurrency=2 --pool eventlet

芹菜开始很好:

 -------------- celery@a828bd5b0089 v4.2.1 (windowlicker)
---- **** -----
--- * ***  * -- Linux-4.9.93-linuxkit-aufs-x86_64-with 2018-11-15 16:06:59
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app:         app.controller.engine:0x7f8ba4eb70b8
- ** ---------- .> transport:   redis://redis:6379/0
- ** ---------- .> results:     redis://redis:6379/1
- *** --- * --- .> concurrency: 2 (eventlet)
-- ******* ---- .> task events: ON
--- ***** -----
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery


[tasks] …
Run Code Online (Sandbox Code Playgroud)

celery flask celery-task

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

不可恢复的错误:ResponseError('UNBLOCKED 强制解除阻塞操作的阻塞,实例状态已更改(主 -> 副本?)

我正在使用一个 redis docker 容器在我的 python 应用程序中用作 celery 和 flaskk-socketio 的消息/代理队列,最近我的 redis 实例经常崩溃,而且它没有回来。

我不是 redis 专家,我还没有找到问题所在,这是日志,感谢您的帮助!

谢谢

[2019-08-09 03:44:29,930: CRITICAL/MainProcess] Unrecoverable error: ResponseError('UNBLOCKED force unblock from blocking operation, instance state changed (master -> replica?)',)
Traceback (most recent call last):
  File "/server/env/lib/python3.6/site-packages/celery/worker/worker.py", line 205, in start
    self.blueprint.start(self)
  File "/server/env/lib/python3.6/site-packages/celery/bootsteps.py", line 119, in start
    step.start(parent)
  File "/server/env/lib/python3.6/site-packages/celery/bootsteps.py", line 369, in start
    return self.obj.start()
  File "/server/env/lib/python3.6/site-packages/celery/worker/consumer/consumer.py", line 322, in start
    blueprint.start(self)
  File "/server/env/lib/python3.6/site-packages/celery/bootsteps.py", line 119, in start
    step.start(parent)
  File "/server/env/lib/python3.6/site-packages/celery/worker/consumer/consumer.py", line 598, in start …
Run Code Online (Sandbox Code Playgroud)

redis flask socket.io flask-socketio

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

Celery 每分钟都会击败运行任务,即使它设置为每两个小时一次

我正在尝试使用 celerybeat 每天在特定时间运行任务。但是出于测试目的,我设置了两个任务每两个小时运行一次,这就是我的配置:

CELERYBEAT_SCHEDULE = {
    'daily-google-connect': {
        'task': 'app.engine.schedule_fetcher',
        'schedule': crontab(hour='*/2'),
        'args': (['G'])
    },
    'daily-facebook-connect': {
        'task': 'app.engine.schedule_fetcher',
        'schedule': crontab(hour='*/2'),
        'args': (['F'])
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我运行芹菜的方式:

celery beat -A app.engine.celery --schedule=/tmp/celerybeat-schedule --pidfile=/tmp/celerybeat.pid -l info
Run Code Online (Sandbox Code Playgroud)

所有内容都使用 docker-compose 在 Docker 容器中运行,因此我确保重新构建应用程序的映像并重新启动容器。

我什至进入正在运行的容器,我在代码中看到了 crontab 设置...但是在我的日志中,我看到任务每分钟都在运行。

我还能做什么来调试这个?

我很感激任何帮助,

谢谢

celery celerybeat

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

ModelMapper - Converter/ AbstractConverter vs Provider

我正在使用 ModelMapper 将一些对象转换为复杂的 DTO,反之亦然。

尽管我试图理解文档,但我发现很难理解何时使用 Converter、Provider 或 AbstractConverter。

现在,例如,如果我想将字符串属性转换为目标 DTO 内的小 DTO,我将在抽象转换器内手动执行此操作。

例如:

dest.setAddressDTO(new AddressDTO(source.getStreet(), source.getNumber()));
Run Code Online (Sandbox Code Playgroud)

虽然这是正确的方法吗?我什么时候应该使用提供程序?

如果我想用条件设置属性,我可以在转换器中使用 Conditional 还是仅在使用 PropertyMap 时?

此外,使用相同的 modelMapper 实例来转换几种不同类型的对象是否是一个好习惯?

提前致谢

java converter modelmapper

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

带 keycloak 的 Flask-OIDC - oidc_callback 默认回调不起作用

我正在尝试在一个简单的 Flask 应用程序中使用 Flask-oidc,以便通过 keycloak 添加身份验证。

但是,一旦我使用有效凭据登录,它就会返回到不存在的 /oidc_callback 。

Flask 日志显示了很多带有 302 结果代码的重定向尝试:

127.0.0.1 - - [26/Nov/2018 10:56:54] "GET /oidc_callback?state=eyJjc3JmX3Rva2VuIjogIlluRDc0UUVLVGhRRkw5TGtuRU9RZGprNTBheVk1cERkIiwgImRlc3RpbmF0aW9uIjogImV5SmhiR2NpT2lKSVV6STFOaUo5LkltaDBkSEE2THk5c2IyTmhiR2h2YzNRNk5UQXdNUzlzYjJkcGJpSS50MVVCRUszbFBxSmZRSzkzMHB5UktBNUZibmNtU0h6TElLblgweXgtTElJIn0%3D&session_state=96eb0bd8-a4a3-49a5-a00c-f4d621cd68e0&code=eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0..T5U8hwYX2ot7Llzo39-cyw.4r-lLPZ1So1j4jPqfVwW5zKgtFjMR_f38ls71SwyqrwLVnE-OfZIi0O74pgzNLQEhxFu2nT-o-7_iNuqv5EIHuaIk_mp-xAY7TlaCViM9NvEDvs78iTTmLwPHsDI20SWuPS08K1wING9CXjhZLudLsBAoWRomFHGfDI_Xyd90lb0wWa73vgcMoeatlt1sEbJTo7XxuDBg-JvyzGfqclvuh5bk848q-07tkDsTKETIK-0wLxb-vUaoqkYmqRVQ3-p.PP0YzjGpjvIqCTNCk3IZTQ HTTP/1.1" 302 -
127.0.0.1 - - [26/Nov/2018 10:56:54] "GET /login HTTP/1.1" 302 -
127.0.0.1 - - [26/Nov/2018 10:56:54] "GET /oidc_callback?state=eyJjc3JmX3Rva2VuIjogIlluRDc0UUVLVGhRRkw5TGtuRU9RZGprNTBheVk1cERkIiwgImRlc3RpbmF0aW9uIjogImV5SmhiR2NpT2lKSVV6STFOaUo5LkltaDBkSEE2THk5c2IyTmhiR2h2YzNRNk5UQXdNUzlzYjJkcGJpSS50MVVCRUszbFBxSmZRSzkzMHB5UktBNUZibmNtU0h6TElLblgweXgtTElJIn0%3D&session_state=96eb0bd8-a4a3-49a5-a00c-f4d621cd68e0&code=eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0..JpVESxYMF7ApS07y_cOxmA.FRX0kTvi_YvRTYnA8OVmkuEHDrVr8cf9Xa9zk2KfXovb4f9vpz6oIcuqjM-EYVfC5PVLYObhVQWW9HZW4Omcewpp-t9M2z7YRZqMAuyeYAsN7_uctScoh6Q634YDSlXiyXnQ81zg3VwVC_C3pWjVnlm8ZLKb5mRAnMDe4li3FXj9OYWlzJu3Ti18TOw2ig2eB0H0D-jdMcMS4Y8CtLOX_IEKQs6f6IXgl6jpo7uDYvKnwQ11zVaX-Bvw8oan79M2.ZwuIdSCc4QYv2imcbp2Tig HTTP/1.1" 302 -
127.0.0.1 - - [26/Nov/2018 10:56:54] "GET /login HTTP/1.1" 302 -
127.0.0.1 - - [26/Nov/2018 10:56:54] "GET /oidc_callback?state=eyJjc3JmX3Rva2VuIjogIlluRDc0UUVLVGhRRkw5TGtuRU9RZGprNTBheVk1cERkIiwgImRlc3RpbmF0aW9uIjogImV5SmhiR2NpT2lKSVV6STFOaUo5LkltaDBkSEE2THk5c2IyTmhiR2h2YzNRNk5UQXdNUzlzYjJkcGJpSS50MVVCRUszbFBxSmZRSzkzMHB5UktBNUZibmNtU0h6TElLblgweXgtTElJIn0%3D&session_state=96eb0bd8-a4a3-49a5-a00c-f4d621cd68e0&code=eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0..4SU_gWqEUykjTc78z47zYg.TzPRPlLCmJ7Ofzp5wHMwJam4pmc21_qo0p8bIpULbDE8Q39IESxSO2Sxqvxi67xnNXL90CqbG5uRt3k_2oDPzFUCjoNw0EDibiqSPlnuMNgizGSCXAyVV8DafMJqTGhnbHUUpGVqLzMosIlfwM14jhjXFick0GaC10TPFFdiGZdfVFZlSH95XtrGQ-e9dfgpvi5ioPhlQ1S9Eo9kqSh9WwhOCfGRZe9GNLNFtUT9YCPHHmLirRNLc5NiOdm-kH3L.2Mmopk3YJ0_AiCjk2ArKwQ HTTP/1.1" 302 -
...
Run Code Online (Sandbox Code Playgroud)

经过一段时间的尝试后,我在控制台中也收到此错误:

oauth2client.client.FlowExchangeError
oauth2client.client.FlowExchangeError: invalid_grantCode not valid
Run Code Online (Sandbox Code Playgroud)

这是我的烧瓶应用程序代码:

import json
from flask import Flask, g
from flask_oidc …
Run Code Online (Sandbox Code Playgroud)

python flask keycloak flask-oauthlib

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

蒙特卡洛与UCB适用于复杂的纸牌游戏

我试图了解MCTS算法的工作原理以及如何在纸牌游戏中实现它以改进AI引擎.

我已经阅读了mcts.ai/网站和许多关于它的论文,其中一篇展示了一些关于在智能卡游戏的AI中应用蒙特卡洛搜索与UCB成功的结果,这或多或少是我需要做的但是,我在尝试理解某些要点以及如何应用它时遇到了一些麻烦,以便解决我的需求.我在数学方面也没那么多经验,所以当论文用复杂的公式解释所有这些东西时我会迷失方向.

这是我到目前为止所提出的:

  1. 给定一个游戏状态(游戏中的用户手),确定哪些是可以进行的所有可能的合法游戏,然后我将创建一个节点列表(一个代表每个游戏)作为MCTSTree的根节点中的属性,每个节点的结果(得分值?)

  2. 使用随机播放器模拟每个合法游戏的完整(直到结束)游戏玩法,并将结果记录在每个节点中,无论玩家是赢还是输,以获得完整的图片.

这里是"我认为"应该应用蒙特卡洛+ UCB的地方:

  1. 使用UCB递归地选择更有前途的游戏(节点),并且在其叶子的情况下,从其gameState扩展具有所有可能游戏的节点.

  2. 模拟所选节点的n个播出,直到达到一定的时间.

    • 在这个阶段我有一些疑问...说我尝试随机播放给出一个可能的播出列表...为了继续模拟,我该如何处理第一个结果?我应该让树长大吗?
  3. 我如何反向传播结果?

然后,

  • 记住,因为这是一个复杂的纸牌游戏,我有这么多可能的动作......它是否有足够好的性能在任何节点中拥有这么多的孩子?

  • 如果每个模拟都基于游戏状态,并且每次玩家应用移动时游戏都会改变状态,那么我怎么知道树是否真的有用?

我真的很感激任何帮助.

非常感谢你!

algorithm artificial-intelligence upperbound

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

错误:类 uri 'eventlet' 无效或未找到

我一直在运行一个使用 Celery 运行任务的 dockerized Flask 应用程序。要运行该应用程序,我将 gunicorn 与 eventlet 一起使用,并且使用 alpine linux 发行版运行良好。

但是,由于 sklearn 和其他库的一些问题,我不得不转移到 ubuntu,现在我在运行我的应用程序时遇到了问题。

首先,我收到此错误:

Error: class uri 'eventlet' invalid or not found:

[Traceback (most recent call last):
  File "/myapp/env/lib/python3.6/site-packages/gunicorn/workers/geventlet.py", line 11, in <module>
    import eventlet
ModuleNotFoundError: No module named 'eventlet'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/myapp/env/lib/python3.6/site-packages/gunicorn/util.py", line 135, in load_class
    mod = import_module('.'.join(components))
  File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", …
Run Code Online (Sandbox Code Playgroud)

python celery gunicorn docker flask-socketio

5
推荐指数
2
解决办法
2659
查看次数

使用docker-compose运行容器时出错,从dockerhub中的私人仓库中提取图像时出错

我在Docker Hub的私有存储库中推送了3张图像。在本地,我一直运行3个图像的方式是通过docker-compose up -d,它可以正常工作。

现在,我试图在其他服务器上运行此映像,因此将它们推送到docker hub中的私有存储库中。

因此,为了在新服务器中运行它们,我要做的是:

1-我使用Docker Hub凭据运行Docker登录

WARNING! Your password will be stored unencrypted in /home/user/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
Run Code Online (Sandbox Code Playgroud)

2-我手动拉他们没有错误:

~$ docker pull user/repo:tag
mongo: Pulling from user/repo
Digest: sha256:9c6a336963e6f680aa9550d502bc777e212f0025d22229fd60cb5826289f84e4
Status: Image is up to date for user/repo:tag
Run Code Online (Sandbox Code Playgroud)

所以我在那里复制了我的docker-compose.yml:

版本:“ 3.1”

services:
  engine:
    image: engine
    container_name: engine
    ports:
      - 5000:5000
    volumes:
      - $HOME/data/engine-import:/app/import
    depends_on:
      - mongo

  mongo:
    image: mongo
    container_name: mongo
    ports:
      - 27018:27017
    volumes:
      - $HOME/data/mongo-data:/data/db
      - $HOME/data/mongo-bkp:/data/bkp …
Run Code Online (Sandbox Code Playgroud)

ubuntu docker dockerhub docker-compose

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

Flask-SocketIO 和 400 错误请求

我正在使用 socketio 运行 Flask 应用程序来处理通知。Flask 应用程序正在侦听端口 5000,而客户端在 8080。

js 客户端总是收到这个错误:

VM15520:1 GET http://localhost:5000/socket.io/?EIO=3&transport=polling&t=Mb2_LpO 400 (Bad Request)
Access to XMLHttpRequest at 'http://localhost:5000/socket.io/?EIO=3&transport=polling&t=Mb2_LpO' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Run Code Online (Sandbox Code Playgroud)

我实际上是用 gunicorn 启动我的应用程序的,如下所示:

gunicorn --workers=1 --worker-class eventlet --certfile=keys/key.crt --keyfile=keys/key.key --bind 0.0.0.0:5000 myapp.run:app
Run Code Online (Sandbox Code Playgroud)

这是我的 run.py:

import eventlet
from myapp import create_app
eventlet.monkey_patch()
app, celery = create_app('config_prod.py')
Run Code Online (Sandbox Code Playgroud)

我也在我的应用工厂中使用 CORS(app)。

我还尝试将其添加到我的一张蓝图中:

@api.after_request
def after_request(response):
    response.headers.add('Access-Control-Allow-Origin', 'http://localhost:8080')
    response.headers.add('Access-Control-Allow-Headers',
                         'Origin, X-Requested-With, Content-Type, Accept, Authorization')
    response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS') …
Run Code Online (Sandbox Code Playgroud)

python flask socket.io flask-socketio

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

如何在列表中获取具有更多事件的字符串

我有一个字符串列表,我正在尝试一个方法,告诉我哪个字符串在列表中出现更多.

这是我到目前为止所做的:

package codekata;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class OcurrenciasEnLista {

    public static void main(String[] args) {

        List<String> lista = new ArrayList<String>();
        lista.add("test");
        lista.add("foo");
        lista.add("foo");
        lista.add("foo");
        lista.add("bar");
        lista.add("crack");
        moreOftenWord(lista);
    }

    private static void moreOftenWord(List<String> lista) {
        Map<String, Integer> mapa = new HashMap<String, Integer>();

        for (String palabra: lista)
            addOrIncrementCount(mapa, palabra);


    }

    private static void addOrIncrementCount(Map<String, Integer> counters,
            String toAdd) {

        Integer currValue = counters.get(toAdd);
        if (currValue == null)
            counters.put(toAdd, 1);
        else
        {
            counters.put(toAdd, currValue + 1); …
Run Code Online (Sandbox Code Playgroud)

java

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