我一直在运行一个带有芹菜工人的烧瓶应用程序,并且在三个独立的码头集装箱中没有任何问题.
这就是我开始它的方式:
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) 我正在使用一个 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) 我正在尝试使用 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 设置...但是在我的日志中,我看到任务每分钟都在运行。
我还能做什么来调试这个?
我很感激任何帮助,
谢谢
我正在使用 ModelMapper 将一些对象转换为复杂的 DTO,反之亦然。
尽管我试图理解文档,但我发现很难理解何时使用 Converter、Provider 或 AbstractConverter。
现在,例如,如果我想将字符串属性转换为目标 DTO 内的小 DTO,我将在抽象转换器内手动执行此操作。
例如:
dest.setAddressDTO(new AddressDTO(source.getStreet(), source.getNumber()));
Run Code Online (Sandbox Code Playgroud)
虽然这是正确的方法吗?我什么时候应该使用提供程序?
如果我想用条件设置属性,我可以在转换器中使用 Conditional 还是仅在使用 PropertyMap 时?
此外,使用相同的 modelMapper 实例来转换几种不同类型的对象是否是一个好习惯?
提前致谢
我正在尝试在一个简单的 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) 我试图了解MCTS算法的工作原理以及如何在纸牌游戏中实现它以改进AI引擎.
我已经阅读了mcts.ai/网站和许多关于它的论文,其中一篇展示了一些关于在智能卡游戏的AI中应用蒙特卡洛搜索与UCB成功的结果,这或多或少是我需要做的但是,我在尝试理解某些要点以及如何应用它时遇到了一些麻烦,以便解决我的需求.我在数学方面也没那么多经验,所以当论文用复杂的公式解释所有这些东西时我会迷失方向.
这是我到目前为止所提出的:
给定一个游戏状态(游戏中的用户手),确定哪些是可以进行的所有可能的合法游戏,然后我将创建一个节点列表(一个代表每个游戏)作为MCTSTree的根节点中的属性,每个节点的结果(得分值?)
使用随机播放器模拟每个合法游戏的完整(直到结束)游戏玩法,并将结果记录在每个节点中,无论玩家是赢还是输,以获得完整的图片.
这里是"我认为"应该应用蒙特卡洛+ UCB的地方:
使用UCB递归地选择更有前途的游戏(节点),并且在其叶子的情况下,从其gameState扩展具有所有可能游戏的节点.
模拟所选节点的n个播出,直到达到一定的时间.
我如何反向传播结果?
然后,
记住,因为这是一个复杂的纸牌游戏,我有这么多可能的动作......它是否有足够好的性能在任何节点中拥有这么多的孩子?
如果每个模拟都基于游戏状态,并且每次玩家应用移动时游戏都会改变状态,那么我怎么知道树是否真的有用?
我真的很感激任何帮助.
非常感谢你!
我一直在运行一个使用 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) 我在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) 我正在使用 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) 我有一个字符串列表,我正在尝试一个方法,告诉我哪个字符串在列表中出现更多.
这是我到目前为止所做的:
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) flask ×4
celery ×3
python ×3
docker ×2
java ×2
socket.io ×2
algorithm ×1
celery-task ×1
celerybeat ×1
converter ×1
dockerhub ×1
gunicorn ×1
keycloak ×1
modelmapper ×1
redis ×1
ubuntu ×1
upperbound ×1